diff options
author | Martynas Venckus <martynas@cvs.openbsd.org> | 2011-04-29 21:37:41 +0000 |
---|---|---|
committer | Martynas Venckus <martynas@cvs.openbsd.org> | 2011-04-29 21:37:41 +0000 |
commit | 0b05b97e06656f9592abd0da0dec56488e88bf54 (patch) | |
tree | aeadbf032ac6e9ad91a990981a2b1b8667d1290b /lib | |
parent | e2c007b61e4ab4e9e12d9d9ae455a7ffba1a7471 (diff) |
Trick GCC (-O2) into actually raising the underflow exception on m88k.
Since the second division operand is a power of two, non-zero,
non-nan, this got optimized (-O2) into multiplication. As a result
the underflow exception wasn't being raised properly.
Make the second operand a volatile to prevent incorrect optimizations.
OK miod@.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/libm/arch/m88k/fenv.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/lib/libm/arch/m88k/fenv.c b/lib/libm/arch/m88k/fenv.c index 902914b9ade..e2aa8f989b2 100644 --- a/lib/libm/arch/m88k/fenv.c +++ b/lib/libm/arch/m88k/fenv.c @@ -1,4 +1,4 @@ -/* $OpenBSD: fenv.c,v 1.2 2011/04/28 22:07:10 miod Exp $ */ +/* $OpenBSD: fenv.c,v 1.3 2011/04/29 21:37:40 martynas Exp $ */ /* * Copyright (c) 2011 Martynas Venckus <martynas@openbsd.org> @@ -109,8 +109,8 @@ feraiseexcept(int excepts) d *= 2.0; } if (excepts & FE_UNDERFLOW) { - d = 0x1p-1022; - d /= 0x1p1023; + d = 0x1p1023; + d = 0x1p-1022 / d; } if (excepts & FE_INEXACT) { d = 0x1p-1022; |