For the gcc 5.5 version: 30 if (!(d == t->double_value)) { (gdb) x/16i $pc => 0x804887c <h_strto+60>: fldl 0x4(%ebx) 0x804887f <h_strto+63>: fucomp %st(2) 0x8048881 <h_strto+65>: fnstsw %ax 0x8048883 <h_strto+67>: sahf 0x8048884 <h_strto+68>: jp 0x8048891 <h_strto+81> 0x8048886 <h_strto+70>: jne 0x8048891 <h_strto+81>
and after the sahf: (gdb) info float R7: Valid 0xc00cc0e6b7318fc50481 -12345.67890000000079 =>R6: Valid 0xc00cc0e6b7318fc50800 -12345.67890000000079 R5: Empty 0xc00cc0e6b7318fc50800 R4: Empty 0x00000000000000000000 R3: Empty 0x00000000000000000000 R2: Empty 0x00000000000000000000 R1: Empty 0x00000000000000000000 R0: Empty 0x00000000000000000000 Status Word: 0x3120 PE C0 TOP: 6 Control Word: 0x037f IM DM ZM OM UM PM PC: Extended Precision (64-bits) RC: Round to nearest Tag Word: 0x0fff Instruction Pointer: 0x17:0x0804887f Operand Pointer: 0x1f:0x08049cd0 Opcode: 0xddea and the "jne" is taken. Martin