https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69570
Bernd Schmidt <bernds at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution|--- |INVALID --- Comment #9 from Bernd Schmidt <bernds at gcc dot gnu.org> --- 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.