https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92875
--- Comment #2 from anders at wahrzeichnen dot de <anders at wahrzeichnen dot de> --- No, -ffloat-store does not help. And this has little if anything to do with 323, imho. The asm generated for f3 is instructive: There, GCC wants to load a double constant 0x3fb999999999999a into the 387 FPU, which is 0.10000000000000000555... The single-precision constant t passed as argument to f0...f3 is 0x3dcccccd, which is 0.10000000149... So, it's no wonder that f3 returns 1; after all 0.10000000149 > 0.10000000000000000555. The questions are: Why does the code generated for f2 try to load a double constant even if it is explicitly suffixed 'f'? Why should casting to (float) help? Why does std=c11 or c18 change the game?