This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: REGRESSION in 3.2.1-pre on mips-irix6 (and elsewhere) compiling execute/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.
Thanks!
>
> 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.
I don't think this is expensive enought to worry. But any insight about
who messed up the values?
I think life analysis itself is safe for this stuff as it does only dead
isntruction removal that does update tables properly, so probably some
earlier pass already did. If it is the case, we probably should rebuild
after that one.
Honza
>
> 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 ();
> }
> ----------------------------------------------------------------------