Bug 37913 - [4.4 Regression] ICE: Segmentation fault in link_block, cfg.c:153
Summary: [4.4 Regression] ICE: Segmentation fault in link_block, cfg.c:153
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: middle-end (show other bugs)
Version: 4.4.0
: P3 normal
Target Milestone: 4.4.0
Assignee: Jakub Jelinek
URL: http://gcc.gnu.org/ml/gcc-patches/200...
Keywords: ice-on-valid-code
Depends on:
Blocks:
 
Reported: 2008-10-25 08:53 UTC by Marcus Holland-Moritz
Modified: 2008-10-29 15:21 UTC (History)
1 user (show)

See Also:
Host: i686-pc-linux-gnu
Target:
Build: i686-pc-linux-gnu
Known to work:
Known to fail:
Last reconfirmed: 2008-10-28 13:09:04


Attachments
Preprocessed source that triggers ICE/segfault (145.46 KB, text/plain)
2008-10-25 08:56 UTC, Marcus Holland-Moritz
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Marcus Holland-Moritz 2008-10-25 08:53:50 UTC
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.
Comment 1 Marcus Holland-Moritz 2008-10-25 08:56:05 UTC
Created attachment 16539 [details]
Preprocessed source that triggers ICE/segfault
Comment 2 Uroš Bizjak 2008-10-25 09:46:52 UTC
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
}

Comment 3 Uroš Bizjak 2008-10-25 10:14:17 UTC
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>
Comment 4 Jakub Jelinek 2008-10-29 15:19:51 UTC
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

Comment 5 Jakub Jelinek 2008-10-29 15:21:46 UTC
Fixed.