This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Re: REGRESSION in 3.2.1-pre on mips-irix6 (and elsewhere) compilingexecute/20011219-1.c
All,
Graham Stott wrote:
Jan,
I've reproduced the problem on a mips-sgi-irix6.5 cross.
Ok now to do some digging.
Graham
Can those people with access to failing targets please try the following
patch.
I'm going to do a i686-pc-linux-gnu bootstrap over night as an minimal
sanity check.
The problem is the DEAD jumptable should have been deleted but wasn't
because the label had an incorrect NUSES so the delete_dead_jumptables
thought it was still used.
Rebuilding the NUSES field of all label_refs at the end of life analysis
and immediately prior to the purging dead jumptables we allow the
delete_dead_jumptables routine to purge all the dead jump tables.
We are going to take a performance hit with this patch but I'm not
sure how significant it'll be.
Comments.
Graham
ChangeLog
* flow.c(life_analysis): Update LABEL_NUSES before purging
dead jumptables.
----------------------------------------------------------------
Index: flow.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/flow.c,v
retrieving revision 1.505.2.4.4.1
diff -c -p -r1.505.2.4.4.1 flow.c
*** flow.c 19 Aug 2002 18:59:31 -0000 1.505.2.4.4.1
--- flow.c 13 Nov 2002 23:48:30 -0000
*************** life_analysis (f, file, flags)
*** 499,504 ****
--- 499,507 ----
}
}
#endif
+
+ rebuild_jump_labels (get_insns ());
+
/* Removing dead insns should've made jumptables really dead. */
delete_dead_jumptables ();
}
----------------------------------------------------------------------