Kaynağa Gözat

make new math code compatible with unused variable warning/error

commit b50d315fd23f0fbc4c11e2583801dd123d933745 introduced
fp_force_eval implemented by default with a dead store to a volatile
variable. unfortunately introduces warnings with -Wunused-variable and
breaks the ability to use -Werror with the default warning options set
by configure when warnings are enabled.

we could just call fp_barrier instead, but that results in a spurious
load after the store due to volatile semantics.

the fix committed here avoids the load. it will still produce warnings
without -Wno-unused-but-set-variable, but that's part of our default
warning profile, and there are already other locations in the source
where an unused variable warning will occur without it.
Rich Felker 5 yıl önce
ebeveyn
işleme
78691fa76d
1 değiştirilmiş dosya ile 6 ekleme ve 3 silme
  1. 6 3
      src/internal/libm.h

+ 6 - 3
src/internal/libm.h

@@ -154,7 +154,8 @@ static inline long double fp_barrierl(long double x)
 #define fp_force_evalf fp_force_evalf
 static inline void fp_force_evalf(float x)
 {
-	volatile float y = x;
+	volatile float y;
+	y = x;
 }
 #endif
 
@@ -162,7 +163,8 @@ static inline void fp_force_evalf(float x)
 #define fp_force_eval fp_force_eval
 static inline void fp_force_eval(double x)
 {
-	volatile double y = x;
+	volatile double y;
+	y = x;
 }
 #endif
 
@@ -170,7 +172,8 @@ static inline void fp_force_eval(double x)
 #define fp_force_evall fp_force_evall
 static inline void fp_force_evall(long double x)
 {
-	volatile long double y = x;
+	volatile long double y;
+	y = x;
 }
 #endif