GCC 3.2 sparc-sun-solaris2.8 bootstrap fails with ICE: SEGV in calculate_global_regs_live

Rainer Orth ro@TechFak.Uni-Bielefeld.DE
Thu May 16 13:39:00 GMT 2002


I just started a full bootstrap of mainline on sparc-sun-solaris2.8.
Unfortunately (compared to last night ;-() I get an ICE when building
libgcc during stage1:

./xgcc -B./ -B/vol/gcc/share/sparc-sun-solaris2.8/bin/ -isystem /vol/gcc/share/sparc-sun-solaris2.8/include -isystem /vol/gcc/share/sparc-sun-solaris2.8/sys-include -O2  -DIN_GCC    -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -isystem ./include  -fPIC -g -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED  -I. -I. -I/vol/gnu/src/gcc/gcc-dist/gcc -I/vol/gnu/src/gcc/gcc-dist/gcc/. -I/vol/gnu/src/gcc/gcc-dist/gcc/config -I/vol/gnu/src/gcc/gcc-dist/gcc/../include  -DL_ashldi3 -c /vol/gnu/src/gcc/gcc-dist/gcc/libgcc2.c -o libgcc/./_ashldi3.o
/vol/gnu/src/gcc/gcc-dist/gcc/libgcc2.c: In function `__ashldi3':
/vol/gnu/src/gcc/gcc-dist/gcc/libgcc2.c:297: internal error: Segmentation Fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.
make[3]: *** [libgcc/./_ashldi3.o] Error 1

I get the following stack trace from cc1:

Program received signal SIGSEGV, Segmentation fault.
0x1f20dc in calculate_global_regs_live (blocks_in=0x766088, 
    blocks_out=0x766088, flags=0) at /vol/gnu/src/gcc/gcc-dist/gcc/flow.c:1124
(gdb) where
#0  0x1f20dc in calculate_global_regs_live (blocks_in=0x766088, 
    blocks_out=0x766088, flags=0) at /vol/gnu/src/gcc/gcc-dist/gcc/flow.c:1124
#1  0x1f0290 in update_life_info (blocks=0x766088, extent=UPDATE_LIFE_GLOBAL, 
    prop_flags=5) at /vol/gnu/src/gcc/gcc-dist/gcc/flow.c:661
#2  0x5559c8 in schedule_insns (dump_file=0x0)
    at /vol/gnu/src/gcc/gcc-dist/gcc/sched-rgn.c:3049
#3  0x3e349c in rest_of_compilation (decl=0x778380)
    at /vol/gnu/src/gcc/gcc-dist/gcc/toplev.c:3107
#4  0x69990 in c_expand_body (fndecl=0x778380, nested_p=0, can_defer_p=1)
    at /vol/gnu/src/gcc/gcc-dist/gcc/c-decl.c:6840
#5  0x692d0 in finish_function (nested=0, can_defer_p=1)
    at /vol/gnu/src/gcc/gcc-dist/gcc/c-decl.c:6707
#6  0x33590 in yyparse () at c-parse.y:400
#7  0x41bcc in c_common_parse_file (set_yydebug=0)
    at /vol/gnu/src/gcc/gcc-dist/gcc/c-lex.c:161
#8  0x3e0470 in compile_file () at /vol/gnu/src/gcc/gcc-dist/gcc/toplev.c:2062
#9  0x3e8ad0 in do_compile () at /vol/gnu/src/gcc/gcc-dist/gcc/toplev.c:5150
#10 0x3e8b4c in toplev_main (argc=16, argv=0xffbef634)
    at /vol/gnu/src/gcc/gcc-dist/gcc/toplev.c:5182
#11 0xe5ed0 in main (argc=16, argv=0xffbef634)
    at /vol/gnu/src/gcc/gcc-dist/gcc/main.c:35
(gdb) up
#1  0x1f0290 in update_life_info (blocks=0x766088, extent=UPDATE_LIFE_GLOBAL, 
    prop_flags=5) at /vol/gnu/src/gcc/gcc-dist/gcc/flow.c:661
(gdb) down
#0  0x1f20dc in calculate_global_regs_live (blocks_in=0x766088, 
    blocks_out=0x766088, flags=0) at /vol/gnu/src/gcc/gcc-dist/gcc/flow.c:1124

At this point in calculate_global_regs_live, bb is NULL, leading to the
observed SEGV:

      EXECUTE_IF_SET_IN_SBITMAP (blocks_in, 0, i,
	{
	  bb = BASIC_BLOCK (i);
	  *--qhead = bb;
	  bb->aux = bb;			<- l.1124
	});

This is almost certainly due to this patch

2002-05-16  Zdenek Dvorak  <rakdver@atrey.karlin.mff.cuni.cz>

	Basic block renumbering removal:

which was the last to touch the affected function.

	Rainer



More information about the Gcc-bugs mailing list