Cygwin: math/modfl.c: Fix segment faults in modfl().
Reference: https://sourceforge.net/p/mingw-w64/bugs/478/ Signed-off-by: Liu Hao <lh_mouse@126.com>
This commit is contained in:
parent
ec9734dbb5
commit
0e6690a92c
|
@ -21,7 +21,7 @@ modfl (long double value, long double* iptr)
|
||||||
"fldcw (%%rsp)\n"
|
"fldcw (%%rsp)\n"
|
||||||
"frndint\n"
|
"frndint\n"
|
||||||
"fldcw 4(%%rsp)\n"
|
"fldcw 4(%%rsp)\n"
|
||||||
"addq $8, %%rsp\n" : "=t" (int_part) : "0" (value)); /* round */
|
"addq $8, %%rsp\n" : "=t" (int_part) : "0" (value) : "eax"); /* round */
|
||||||
#elif defined(_X86_) || defined(__i386__)
|
#elif defined(_X86_) || defined(__i386__)
|
||||||
asm ("push %%eax\n\tsubl $8, %%esp\n"
|
asm ("push %%eax\n\tsubl $8, %%esp\n"
|
||||||
"fnstcw 4(%%esp)\n"
|
"fnstcw 4(%%esp)\n"
|
||||||
|
@ -31,7 +31,7 @@ modfl (long double value, long double* iptr)
|
||||||
"fldcw (%%esp)\n"
|
"fldcw (%%esp)\n"
|
||||||
"frndint\n"
|
"frndint\n"
|
||||||
"fldcw 4(%%esp)\n"
|
"fldcw 4(%%esp)\n"
|
||||||
"addl $8, %%esp\n\tpop %%eax\n" : "=t" (int_part) : "0" (value)); /* round */
|
"addl $8, %%esp\n\tpop %%eax\n" : "=t" (int_part) : "0" (value) : "eax"); /* round */
|
||||||
#else
|
#else
|
||||||
int_part = truncl(value);
|
int_part = truncl(value);
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue