https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68044

            Bug ID: 68044
           Summary: ceil() with -O3 and -masm=intel fails to compile
           Product: gcc
           Version: 5.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: janisozaur+gcc at gmail dot com
  Target Milestone: ---

Created attachment 36559
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=36559&action=edit
test case file

on Arch Linux with gcc 5.2.0, glibc 2.22-3

Test case to be compiled with:
gcc test.c -o test -m32 -O3 -masm=intel

the ceil() function is taken from /usr/include/bits/mathinline.h, verbatim
provided here:

__inline_mathcodeNP (ceil, __x, \
  register long double __value;                                               \
  register int __ignore;                                                      \
  unsigned short int __cw;                                                    \
  unsigned short int __cwtmp;                                                 \
  __asm __volatile ("fnstcw %3\n\t"                                           \
                    "movzwl %3, %1\n\t"                                       \
                    "andl $0xf3ff, %1\n\t"                                    \
                    "orl $0x0800, %1\n\t"       /* rounding up */             \
                    "movw %w1, %2\n\t"                                        \
                    "fldcw %2\n\t"                                            \
                    "frndint\n\t"                                             \
                    "fldcw %3"                                                \
                    : "=t" (__value), "=&q" (__ignore), "=m" (__cwtmp),       \
                      "=m" (__cw)                                             \
                    : "0" (__x));                                             \
  return __value)

This works fine without -masm=intel

Reply via email to