https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114746
--- Comment #1 from Vincent Lefèvre <vincent-gcc at vinc17 dot net> --- There is the same issue with constant floating-point expressions. Consider the following program given at https://github.com/llvm/llvm-project/issues/89128 #include <float.h> #include <stdio.h> static double const_init = 1.0 + (DBL_EPSILON/2) + (DBL_EPSILON/2); int main() { double nonconst_init = 1.0; nonconst_init = nonconst_init + (DBL_EPSILON/2) + (DBL_EPSILON/2); printf("FLT_EVAL_METHOD = %d\n", FLT_EVAL_METHOD); printf("const: %g\n", const_init - 1.0); printf("nonconst: %g\n", (double)nonconst_init - 1.0); } With -m32 -mno-sse, one gets FLT_EVAL_METHOD = 2 const: 0 nonconst: 2.22045e-16 instead of FLT_EVAL_METHOD = 2 const: 2.22045e-16 nonconst: 2.22045e-16