math: turn off the STRICT_ASSIGN workaround by default
authorSzabolcs Nagy <nsz@port70.net>
Tue, 13 Nov 2012 18:59:02 +0000 (19:59 +0100)
committerSzabolcs Nagy <nsz@port70.net>
Tue, 13 Nov 2012 18:59:02 +0000 (19:59 +0100)
the volatile hack in STRICT_ASSIGN is only needed if
assignment is not respected and excess precision is kept.
gcc -fexcess-precision=standard and -ffloat-store both
respect assignment and musl use these flags by default.
i kept the macro for now so the workaround may be used
for bad compilers in the future.

src/internal/libm.h

index dfecd83680647db220f8aeb8d8518d46e9c9664d..46c4b56451aa32fd70929628fc4687552f71ae6a 100644 (file)
@@ -157,16 +157,14 @@ long double __tanl(long double, long double, int);
 long double __polevll(long double, const long double *, int);
 long double __p1evll(long double, const long double *, int);
 
-// FIXME: not needed when -fexcess-precision=standard is supported (>=gcc4.5)
-/*
- * Attempt to get strict C99 semantics for assignment with non-C99 compilers.
- */
-#if 1
+#if 0
+/* Attempt to get strict C99 semantics for assignment with non-C99 compilers. */
 #define STRICT_ASSIGN(type, lval, rval) do {    \
         volatile type __v = (rval);             \
         (lval) = __v;                           \
 } while (0)
 #else
+/* Should work with -fexcess-precision=standard (>=gcc-4.5) or -ffloat-store */
 #define STRICT_ASSIGN(type, lval, rval) ((lval) = (type)(rval))
 #endif