m68k: use math_force_eval in nextafterl
authorAndreas Schwab <schwab@linux-m68k.org>
Mon, 9 Dec 2013 23:08:12 +0000 (00:08 +0100)
committerAndreas Schwab <schwab@linux-m68k.org>
Mon, 9 Dec 2013 23:16:12 +0000 (00:16 +0100)
ports/ChangeLog.m68k
ports/sysdeps/m68k/m680x0/fpu/s_nextafterl.c

index 910df22..d3e90b2 100644 (file)
@@ -1,5 +1,8 @@
 2013-12-10  Andreas Schwab  <schwab@linux-m68k.org>
 
+       * sysdeps/m68k/m680x0/fpu/s_nextafterl.c (__nextafterl): Use
+       math_force_eval.
+
        * sysdeps/unix/sysv/linux/m68k/nptl/lowlevellock.h
        (FUTEX_WAIT_REQEUE_PI, FUTEX_CMP_REQEUE_PI)
        (lll_futex_wait_requeue_pi, lll_futex_timed_wait_requeue_pi)
index 9a03b78..03c136b 100644 (file)
@@ -46,7 +46,8 @@ long double __nextafterl(long double x, long double y)
        if((ix|hx|lx)==0) {                     /* x == 0 */
            SET_LDOUBLE_WORDS(x,esy&0x8000,0,1);/* return +-minsubnormal */
            y = x*x;
-           if(y==x) return y; else return x;   /* raise underflow flag */
+           math_force_eval (y);                /* raise underflow flag */
+           return x;
        }
        if(esx>=0) {                    /* x > 0 */
            if(esx>esy||((esx==esy) && (hx>hy||((hx==hy)&&(lx>ly))))) {
@@ -91,10 +92,7 @@ long double __nextafterl(long double x, long double y)
        if(esy==0x7fff) return x+x;     /* overflow  */
        if(esy==0 && (hx & 0x80000000) == 0) { /* underflow */
            y = x*x;
-           if(y!=x) {          /* raise underflow flag */
-               SET_LDOUBLE_WORDS(y,esx,hx,lx);
-               return y;
-           }
+           math_force_eval (y);                /* raise underflow flag */
        }
        SET_LDOUBLE_WORDS(x,esx,hx,lx);
        return x;