From 033a9d6ad2a65ac03156b179e7c6101d2e72c4c0 Mon Sep 17 00:00:00 2001 From: Szabolcs Nagy Date: Tue, 13 Nov 2012 13:34:45 +0100 Subject: [PATCH] math: use '#pragma STDC FENV_ACCESS ON' when fenv is accessed --- src/fenv/feupdateenv.c | 1 + src/math/fma.c | 2 ++ src/math/fmaf.c | 1 + src/math/fmal.c | 1 + src/math/llrintl.c | 1 + src/math/lrint.c | 1 + src/math/lrintl.c | 1 + src/math/nearbyint.c | 1 + src/math/nearbyintf.c | 1 + src/math/nearbyintl.c | 1 + 10 files changed, 11 insertions(+) diff --git a/src/fenv/feupdateenv.c b/src/fenv/feupdateenv.c index 50cef8e5..f45ed7c0 100644 --- a/src/fenv/feupdateenv.c +++ b/src/fenv/feupdateenv.c @@ -2,6 +2,7 @@ int feupdateenv(const fenv_t *envp) { + #pragma STDC FENV_ACCESS ON int ex = fetestexcept(FE_ALL_EXCEPT); fesetenv(envp); feraiseexcept(ex); diff --git a/src/math/fma.c b/src/math/fma.c index 7076d4b9..17f1cdcc 100644 --- a/src/math/fma.c +++ b/src/math/fma.c @@ -89,6 +89,7 @@ static int getexp(long double x) double fma(double x, double y, double z) { + #pragma STDC FENV_ACCESS ON long double hi, lo1, lo2, xy; int round, ez, exy; @@ -306,6 +307,7 @@ static inline struct dd dd_mul(double a, double b) */ double fma(double x, double y, double z) { + #pragma STDC FENV_ACCESS ON double xs, ys, zs, adj; struct dd xy, r; int oround; diff --git a/src/math/fmaf.c b/src/math/fmaf.c index cc427fb5..a1c7f4f8 100644 --- a/src/math/fmaf.c +++ b/src/math/fmaf.c @@ -37,6 +37,7 @@ */ float fmaf(float x, float y, float z) { + #pragma STDC FENV_ACCESS ON double xy, result; uint32_t hr, lr; diff --git a/src/math/fmal.c b/src/math/fmal.c index be64f145..ccbe434d 100644 --- a/src/math/fmal.c +++ b/src/math/fmal.c @@ -162,6 +162,7 @@ static inline struct dd dd_mul(long double a, long double b) */ long double fmal(long double x, long double y, long double z) { + #pragma STDC FENV_ACCESS ON long double xs, ys, zs, adj; struct dd xy, r; int oround; diff --git a/src/math/llrintl.c b/src/math/llrintl.c index 32bb8b03..3449f6f2 100644 --- a/src/math/llrintl.c +++ b/src/math/llrintl.c @@ -18,6 +18,7 @@ raises inexact (with tonearest or upward rounding mode) */ long long llrintl(long double x) { + #pragma STDC FENV_ACCESS ON int e; e = fetestexcept(FE_INEXACT); diff --git a/src/math/lrint.c b/src/math/lrint.c index 67091835..bdca8b7c 100644 --- a/src/math/lrint.c +++ b/src/math/lrint.c @@ -28,6 +28,7 @@ as a double. #if LONG_MAX < 1U<<53 && defined(FE_INEXACT) long lrint(double x) { + #pragma STDC FENV_ACCESS ON int e; e = fetestexcept(FE_INEXACT); diff --git a/src/math/lrintl.c b/src/math/lrintl.c index 5eb1ba7e..b2a8106d 100644 --- a/src/math/lrintl.c +++ b/src/math/lrintl.c @@ -18,6 +18,7 @@ raises inexact (with tonearest or upward rounding mode) */ long lrintl(long double x) { + #pragma STDC FENV_ACCESS ON int e; e = fetestexcept(FE_INEXACT); diff --git a/src/math/nearbyint.c b/src/math/nearbyint.c index 7a4c58cf..f4e8aac4 100644 --- a/src/math/nearbyint.c +++ b/src/math/nearbyint.c @@ -6,6 +6,7 @@ double nearbyint(double x) { #ifdef FE_INEXACT + #pragma STDC FENV_ACCESS ON int e; e = fetestexcept(FE_INEXACT); diff --git a/src/math/nearbyintf.c b/src/math/nearbyintf.c index 39c3d73b..092e9ffa 100644 --- a/src/math/nearbyintf.c +++ b/src/math/nearbyintf.c @@ -4,6 +4,7 @@ float nearbyintf(float x) { #ifdef FE_INEXACT + #pragma STDC FENV_ACCESS ON int e; e = fetestexcept(FE_INEXACT); diff --git a/src/math/nearbyintl.c b/src/math/nearbyintl.c index 0ff4b1f9..82852492 100644 --- a/src/math/nearbyintl.c +++ b/src/math/nearbyintl.c @@ -11,6 +11,7 @@ long double nearbyintl(long double x) long double nearbyintl(long double x) { #ifdef FE_INEXACT + #pragma STDC FENV_ACCESS ON int e; e = fetestexcept(FE_INEXACT); -- GitLab