This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Re: GCC 3.2 sparc-sun-solaris2.8 bootstrap fails with ICE: SEGV in calculate_global_regs_live
- From: Zdenek Dvorak <rakdver at atrey dot karlin dot mff dot cuni dot cz>
- To: Rainer Orth <ro at TechFak dot Uni-Bielefeld dot DE>
- Cc: gcc-bugs at gcc dot gnu dot org, gcc-patches at gcc dot gnu dot org
- Date: Thu, 16 May 2002 22:53:14 +0200
- Subject: Re: GCC 3.2 sparc-sun-solaris2.8 bootstrap fails with ICE: SEGV in calculate_global_regs_live
- References: <15588.6401.840049.466425@xayide.TechFak.Uni-Bielefeld.DE>
Hello.
> 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.
This should help (but considering that there are problems even on i686 where
I tested it, it might be better to revert the patch):
Zdenek
Index: sched-rgn.c
===================================================================
RCS file: /cvsroot/gcc/gcc/gcc/sched-rgn.c,v
retrieving revision 1.38
diff -c -3 -p -r1.38 sched-rgn.c
*** sched-rgn.c 16 May 2002 17:34:53 -0000 1.38
--- sched-rgn.c 16 May 2002 20:48:59 -0000
*************** schedule_insns (dump_file)
*** 2982,2987 ****
--- 2982,2988 ----
sbitmap large_region_blocks, blocks;
int rgn;
int any_large_regions;
+ basic_block bb;
/* Taking care of this degenerate case makes the rest of
this code simpler. */
*************** schedule_insns (dump_file)
*** 3021,3027 ****
any_large_regions = 0;
large_region_blocks = sbitmap_alloc (last_basic_block);
! sbitmap_ones (large_region_blocks);
blocks = sbitmap_alloc (last_basic_block);
sbitmap_zero (blocks);
--- 3022,3030 ----
any_large_regions = 0;
large_region_blocks = sbitmap_alloc (last_basic_block);
! sbitmap_zero (large_region_blocks);
! FOR_ALL_BB (bb)
! SET_BIT (large_region_blocks, bb->sindex);
blocks = sbitmap_alloc (last_basic_block);
sbitmap_zero (blocks);