summaryrefslogtreecommitdiffstats
path: root/winsup/mingw/mingwex/math/modfl.c
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/mingw/mingwex/math/modfl.c')
-rw-r--r--winsup/mingw/mingwex/math/modfl.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/winsup/mingw/mingwex/math/modfl.c b/winsup/mingw/mingwex/math/modfl.c
index 5663956f0..c7ea2cbce 100644
--- a/winsup/mingw/mingwex/math/modfl.c
+++ b/winsup/mingw/mingwex/math/modfl.c
@@ -9,10 +9,11 @@ modfl (long double value, long double* iptr)
{
long double int_part;
unsigned short saved_cw;
+ unsigned short tmp_cw;
/* truncate */
asm ("fnstcw %0;" : "=m" (saved_cw)); /* save control word */
- asm ("fldcw %0;" : : "m" ((saved_cw & ~FE_ROUNDING_MASK)
- | FE_TOWARDZERO));
+ tmp_cw = (saved_cw & ~FE_ROUNDING_MASK) | FE_TOWARDZERO;
+ asm ("fldcw %0;" : : "m" (tmp_cw));
asm ("frndint;" : "=t" (int_part) : "0" (value)); /* round */
asm ("fldcw %0;" : : "m" (saved_cw)); /* restore saved cw */
if (iptr)