From 9b0fcb441a44456c7b071c7cdaf90403f81ec05a Mon Sep 17 00:00:00 2001 From: Szabolcs Nagy Date: Fri, 6 Sep 2013 18:35:55 +0000 Subject: math: remove STRICT_ASSIGN macro gcc did not always drop excess precision according to c99 at assignments before version 4.5 even if -std=c99 was requested which caused badly broken mathematical functions on i386 when FLT_EVAL_METHOD!=0 but STRICT_ASSIGN was not used consistently and it is worked around for old compilers with -ffloat-store so it is no longer needed the new convention is to get the compiler respect c99 semantics and when excess precision is not harmful use float_t or double_t or to specialize code using FLT_EVAL_METHOD --- src/internal/libm.h | 11 ----------- 1 file changed, 11 deletions(-) (limited to 'src/internal/libm.h') diff --git a/src/internal/libm.h b/src/internal/libm.h index 9f0d3bc8..ebcd7849 100644 --- a/src/internal/libm.h +++ b/src/internal/libm.h @@ -155,15 +155,4 @@ 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); -#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 - #endif -- cgit v1.2.1