http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54846
Bug #: 54846 Summary: -ftrapv doesn't work in 64-bit mode Classification: Unclassified Product: gcc Version: 4.7.2 Status: UNCONFIRMED Severity: normal Priority: P3 Component: middle-end AssignedTo: unassig...@gcc.gnu.org ReportedBy: miku...@artax.karlin.mff.cuni.cz Host: x86_64-unknown-linux-gnu Target: x86_64-unknown-linux-gnu Build: x86_64-unknown-linux-gnu -ftrapv flag should generate a crash if integer overflow happens. But it doesn't work in 64-bit mode. Try this: #include <stdio.h> int main(void) { int a = 0x70000000; int b = 0x50000000; int c = a + b; printf("%x\n", c); return 0; } When compiled with "-ftrapv -m32", an abort happens. However, when compiled with "-ftrapv -m64", there is no crash. If we look at assembler output, we see that it uses function __addvdi3 to do the addition. This function is for 64-bit numbers, not for 32-bit. If I replace __addvdi3 with __addvsi3, an abort happens correctly.