https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103406
Bug ID: 103406 Summary: gcc -O0 behaves differently on "DBL_MAX related operations" than gcc -O1 and above Product: gcc Version: 11.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: shaohua.li at inf dot ethz.ch Target Milestone: --- Hi there, I found that for a piece of code, gcc would give out different results when compiled with different opt flags. - gcc version: 11.1.0 - Platform: Ubuntu 20.04, x86_64 $gcc a.c -O0; ./a.out nan $ $ $gcc a.c -O1; ./a.out -nan $ $ $cat a.c #include <stdio.h> #include <float.h> #define INFINITY (DBL_MAX+DBL_MAX) #define NAN (INFINITY-INFINITY) void main() { double x = -NAN; double y = NAN; double z = x + y; printf("%lf\n", z); }