mhx@r2d2 $ gcc -v Using built-in specs. Target: i686-pc-linux-gnu Configured with: ../gcc-4.4-20081024/configure --program-suffix=-4.4 --prefix=/home/mhx/gcc/gcc-4.4-20081024 --enable-languages=c,c++ --disable-nls Thread model: posix gcc version 4.4.0 20081024 (experimental) (GCC) mhx@r2d2 $ gcc -c test.i mhx@r2d2 $ gcc -O2 -c test.i IO.c: In function 'XS_IO__Handle_setvbuf': IO.c:835: internal compiler error: Segmentation fault Please submit a full bug report, with preprocessed source if appropriate. See <http://gcc.gnu.org/bugs.html> for instructions.
Created attachment 16539 [details] Preprocessed source that triggers ICE/segfault
Confirmed on x86_64-pc-linux-gnu: Program received signal SIGSEGV, Segmentation fault. 0x00000000004c6e04 in link_block (b=0x7fa2cf6fba20, after=0x7fa2cf6fb840) at ../../gcc-svn/trunk/gcc/cfg.c:153 /home/uros/gcc-svn/trunk/gcc/cfg.c:153:4316:beg:0x4c6e04 Missing separate debuginfos, use: debuginfo-install glibc.x86_64 (gdb) bt #0 0x00000000004c6e04 in link_block (b=0x7fa2cf6fba20, after=0x7fa2cf6fb840) at ../../gcc-svn/trunk/gcc/cfg.c:153 #1 0x00000000006e9bc6 in create_bb (h=<value optimized out>, e=<value optimized out>, after=0x7fa2cf6fb840) at ../../gcc-svn/trunk/gcc/tree-cfg.c:401 #2 0x00000000004cd443 in create_basic_block (head=0x7fa2cf6fba20, end=0x7fa2cf6fb840, after=0x0) at ../../gcc-svn/trunk/gcc/cfghooks.c:611 #3 0x00000000006ec7c5 in gimple_split_block (bb=0x7fa2cf6fba20, stmt=0x7fa2cf6fb840) at ../../gcc-svn/trunk/gcc/tree-cfg.c:4839 #4 0x00000000004cd4cf in split_block (bb=0x7fa2cf6fb840, i=0x7fa2cf6fb840) at ../../gcc-svn/trunk/gcc/cfghooks.c:432 #5 0x00000000006f8ba1 in split_bbs_on_noreturn_calls () at ../../gcc-svn/trunk/gcc/tree-cfgcleanup.c:492 #6 0x00000000006fa060 in cleanup_tree_cfg () at ../../gcc-svn/trunk/gcc/tree-cfgcleanup.c:572 /* Link block B to chain after AFTER. */ void link_block (basic_block b, basic_block after) { b->next_bb = after->next_bb; b->prev_bb = after; after->next_bb = b; b->next_bb->prev_bb = b; <<< here }
Minimized testcase: --cut here-- void Perl_croak (void) __attribute__ ((noreturn)); static int __attribute__ ((noreturn)) not_here (void) { Perl_croak (); } void XS_IO__Handle_setvbuf (void) { int i = not_here (); } --cut here-- gcc -O2 pr37913.c: pr37913.c: In function ‘XS_IO__Handle_setvbuf’: pr37913.c:12: internal compiler error: Segmentation fault Please submit a full bug report, <etc>
Subject: Bug 37913 Author: jakub Date: Wed Oct 29 15:19:24 2008 New Revision: 141426 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=141426 Log: PR middle-end/37913 * tree-cfgcleanup.c (split_bbs_on_noreturn_calls): Only split bbs that haven't been removed yet. * gcc.c-torture/compile/pr37913.c: New test. Added: trunk/gcc/testsuite/gcc.c-torture/compile/pr37913.c Modified: trunk/gcc/ChangeLog trunk/gcc/testsuite/ChangeLog trunk/gcc/tree-cfgcleanup.c
Fixed.