https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69570
--- Comment #10 from Jakub Jelinek <jakub at gcc dot gnu.org> --- (In reply to Bernd Schmidt from comment #9) > Ah, of course. > > 804856f: df ec fucomip %st(4),%st > > pc 0x804856f 0x804856f <bar(unsigned int*, double*)+175> > st0 0.5019607843137254902230771913540508 (raw > 0x3ffe8080808080808081) > st1 1 (raw 0x3fff8000000000000000) > st2 0.2509803921568627451115385956770254 (raw > 0x3ffd8080808080808081) > st3 0 (raw 0x00000000000000000000) > st4 0.5019607843137254832299731788225472 (raw > 0x3ffe8080808080808000) > > An equality comparison of floating point numbers, on x87. One of those was > just loaded from a stack slot, the other was kept in a register the whole > time. > > This code needs -ffloat-store, or -mpc64, when compiled for 32-bit x86. Or -fexcess-precision=standard.