diff options
author | niklas <> | 1998-08-11 22:04:29 +0000 |
---|---|---|
committer | niklas <> | 1998-08-11 22:04:29 +0000 |
commit | 50eee0f1b3f8eb0bb5326831025eae1cacfc3059 (patch) | |
tree | 01ff0cfc12f057a8948f217c696d133646b98e35 | |
parent | 48c04e20a6d223f0f0c769f5c8446952c06c8296 (diff) | |
download | openbsd-50eee0f1b3f8eb0bb5326831025eae1cacfc3059.tar.gz openbsd-50eee0f1b3f8eb0bb5326831025eae1cacfc3059.tar.bz2 openbsd-50eee0f1b3f8eb0bb5326831025eae1cacfc3059.zip |
Temporary fix for a GCC aliasing bug/misfeature that hits here
-rw-r--r-- | src/lib/libc/stdlib/strtod.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/lib/libc/stdlib/strtod.c b/src/lib/libc/stdlib/strtod.c index a4ba993095..4b38110dcb 100644 --- a/src/lib/libc/stdlib/strtod.c +++ b/src/lib/libc/stdlib/strtod.c | |||
@@ -90,7 +90,7 @@ | |||
90 | */ | 90 | */ |
91 | 91 | ||
92 | #if defined(LIBC_SCCS) && !defined(lint) | 92 | #if defined(LIBC_SCCS) && !defined(lint) |
93 | static char *rcsid = "$OpenBSD: strtod.c,v 1.9 1997/03/25 17:07:30 rahnds Exp $"; | 93 | static char *rcsid = "$OpenBSD: strtod.c,v 1.10 1998/08/11 22:04:29 niklas Exp $"; |
94 | #endif /* LIBC_SCCS and not lint */ | 94 | #endif /* LIBC_SCCS and not lint */ |
95 | 95 | ||
96 | #if defined(__m68k__) || defined(__sparc__) || defined(__i386__) || \ | 96 | #if defined(__m68k__) || defined(__sparc__) || defined(__i386__) || \ |
@@ -2004,6 +2004,10 @@ __dtoa | |||
2004 | if (i = (int)(word0(d) >> Exp_shift1 & (Exp_mask>>Exp_shift1))) { | 2004 | if (i = (int)(word0(d) >> Exp_shift1 & (Exp_mask>>Exp_shift1))) { |
2005 | #endif | 2005 | #endif |
2006 | d2 = d; | 2006 | d2 = d; |
2007 | #ifdef __GNUC__ | ||
2008 | /* Do not move instructions depending on d2 over this line. */ | ||
2009 | __asm__ __volatile__ ("" : : "X" (d2) : "memory"); | ||
2010 | #endif | ||
2007 | word0(d2) &= Frac_mask1; | 2011 | word0(d2) &= Frac_mask1; |
2008 | word0(d2) |= Exp_11; | 2012 | word0(d2) |= Exp_11; |
2009 | #ifdef IBM | 2013 | #ifdef IBM |