]> Savannah Git Hosting - gnulib.git/commitdiff
nan: Defeat clang's incorrect -O2 optimization on mips64.
authorBruno Haible <bruno@clisp.org>
Tue, 7 Nov 2023 01:03:54 +0000 (02:03 +0100)
committerBruno Haible <bruno@clisp.org>
Tue, 7 Nov 2023 01:03:54 +0000 (02:03 +0100)
* lib/nan.h (NaNf, NaNd, NaNl): Use 'volatile' to disable a clang
optimization.

ChangeLog
lib/nan.h

index 1103289bae6c69544ae67b4d0808b739096ad67d..1806fe19decc887433ba2cf495a47ed3931e9a7c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+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.
+
 2023-11-06  Bruno Haible  <bruno@clisp.org>
 
        nan: Work around clang's incorrect constant-folding on mips64.
index 219b25aeacb2a16decbb5423c0a2f790b00acbd8..50917488bb1e6e63c375cd567ef024de4fa50d9e 100644 (file)
--- 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