https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95169
--- Comment #3 from Samuel Thibault <samuel.thiba...@ens-lyon.org> --- And for comparison, here is the disassemble of -march=i686 -mtune=generic, which does not raise the exception: Dump of assembler code for function f: 0x000011b9 <+0>: push %ebp 0x000011ba <+1>: mov %esp,%ebp 0x000011bc <+3>: push %ebx 0x000011bd <+4>: sub $0x14,%esp 0x000011c0 <+7>: call 0x1292 <__x86.get_pc_thunk.ax> 0x000011c5 <+12>: add $0x2e3b,%eax 0x000011ca <+17>: mov 0x8(%ebp),%edx 0x000011cd <+20>: mov %edx,-0x10(%ebp) 0x000011d0 <+23>: mov 0xc(%ebp),%edx 0x000011d3 <+26>: mov %edx,-0xc(%ebp) 0x000011d6 <+29>: fldl -0x10(%ebp) 0x000011d9 <+32>: fldz 0x000011db <+34>: fucomip %st(1),%st 0x000011dd <+36>: fstp %st(0) 0x000011df <+38>: setnp %dl 0x000011e2 <+41>: mov $0x0,%ecx 0x000011e7 <+46>: fldl -0x10(%ebp) 0x000011ea <+49>: fldz 0x000011ec <+51>: fucomip %st(1),%st 0x000011ee <+53>: fstp %st(0) 0x000011f0 <+55>: cmovne %ecx,%edx 0x000011f3 <+58>: movzbl %dl,%edx 0x000011f6 <+61>: test %edx,%edx 0x000011f8 <+63>: je 0x120e <f+85> 0x000011fa <+65>: sub $0xc,%esp 0x000011fd <+68>: lea -0x1ff8(%eax),%edx 0x00001203 <+74>: push %edx 0x00001204 <+75>: mov %eax,%ebx 0x00001206 <+77>: call 0x1040 <puts@plt> 0x0000120b <+82>: add $0x10,%esp 0x0000120e <+85>: nop 0x0000120f <+86>: mov -0x4(%ebp),%ebx 0x00001212 <+89>: leave 0x00001213 <+90>: ret