[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
nan: Defeat clang's incorrect -O2 optimization on mips64
From: |
Bruno Haible |
Subject: |
nan: Defeat clang's incorrect -O2 optimization on mips64 |
Date: |
Tue, 07 Nov 2023 02:04:10 +0100 |
The previous patch was sufficient for clang without optimization.
For "clang -O2", another patch is needed in order to prevent the wrong
NaNf(), NaNl() results.
2023-11-06 Bruno Haible <bruno@clisp.org>
nan: Defeat clang's incorrect -O2 optimization on mips64.
* lib/nan.h (NaNf, NaNd, NaNl): Use 'volatile' to disable a clang
optimization.
diff --git a/lib/nan.h b/lib/nan.h
index 219b25aeac..50917488bb 100644
--- a/lib/nan.h
+++ b/lib/nan.h
@@ -37,7 +37,7 @@
static float
NaNf ()
{
- static float zero = 0.0f;
+ static float volatile zero = 0.0f;
return zero / zero;
}
#else
@@ -57,7 +57,7 @@ NaNf ()
static double
NaNd ()
{
- static double zero = 0.0;
+ static double volatile zero = 0.0;
return zero / zero;
}
#else
@@ -86,7 +86,7 @@ static long double NaNl ()
static long double
NaNl ()
{
- static long double zero = 0.0L;
+ static long double volatile zero = 0.0L;
return zero / zero;
}
#else