summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorniklas <>1998-08-11 22:04:29 +0000
committerniklas <>1998-08-11 22:04:29 +0000
commit50eee0f1b3f8eb0bb5326831025eae1cacfc3059 (patch)
tree01ff0cfc12f057a8948f217c696d133646b98e35
parent48c04e20a6d223f0f0c769f5c8446952c06c8296 (diff)
downloadopenbsd-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.c6
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)
93static char *rcsid = "$OpenBSD: strtod.c,v 1.9 1997/03/25 17:07:30 rahnds Exp $"; 93static 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