https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106970
--- Comment #8 from Aldy Hernandez <aldyh at gcc dot gnu.org> --- abulafia:~/bld/t/gcc$ cat a.c int script_obj_as_number_obj, script_obj_as_number_obj_0_0; double script_obj_as_number() { if (script_obj_as_number_obj) return script_obj_as_number_obj_0_0; return __builtin_nanf(""); } void script_obj_cmp() { double num_b = script_obj_as_number(); if (0 < num_b) return; } abulafia:~/bld/t/gcc$ ./cc1 a.c -Ofast -quiet abulafia:~/bld/t/gcc$ works for me ;-)