如何让gcc ftrapv工作?

我正在编译下面的代码

$ gcc -Wall -ftrapv test.c 

但是,运行生成的可执行文件始终打印-2147483648,这不是我的预期。 我正在运行gcc版本4.6.3(Ubuntu / Linaro 4.6.3-1ubuntu5)。

  1 #include  2 #include  3 #include  4 #include  5 6 void h(int signal) 7 { 8 printf("caught signal exiting\n"); 9 exit(1); 10 } 11 12 int main(void) 13 { 14 int x = INT_MAX; 15 int y; 16 17 signal(SIGABRT,h); 18 y = x+1; 19 printf("%d\n",y); 20 return 0; 21 } 

稍后添加:使用clang编译并将SIGABRT更改为SIGILL工作,但到目前为止没有运气。

看起来GCC中的-ftrapv支持有点破,他们有一个开放的bug,Bug-35412在他们的Bugzilla从2008年开始似乎是为了掩盖它。