This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: Re-enable crossjumping before bb-reorder
- From: Jan Hubicka <jh at suse dot cz>
- To: Richard Henderson <rth at redhat dot com>, Jan Hubicka <jh at suse dot cz>,gcc-patches at gcc dot gnu dot org
- Date: Thu, 2 May 2002 19:39:28 +0200
- Subject: Re: Re-enable crossjumping before bb-reorder
- References: <20020430160511.GK18000@atrey.karlin.mff.cuni.cz> <20020430163200.A3211@redhat.com> <20020501070806.GC21948@atrey.karlin.mff.cuni.cz> <20020501093122.A3948@redhat.com> <20020501194421.GD1512@atrey.karlin.mff.cuni.cz> <20020501135713.A4134@redhat.com> <20020501220959.GB10884@atrey.karlin.mff.cuni.cz> <20020501153524.A4237@redhat.com> <20020502163343.GR1512@atrey.karlin.mff.cuni.cz> <20020502103431.B4856@redhat.com>
> On Thu, May 02, 2002 at 06:33:43PM +0200, Jan Hubicka wrote:
> > The patch to disable crossjumping is also not safe when the tablejump
> > is killed for diferent purpose - dead code is eliminated for instance.
>
> If dead code is eliminated, then the DCE pass will also delete
> the tablejump address load, which is fine.
When the tablejump address load gets hoisted out of the loop and spilled
to the stack, it won't be elliminated., so I think it is really not
safe to remove tablejump postreload.
>
> > * cfgrtl.c (try_redirect_by_replacing_jump): Do not kill computed jumps
> > post reload.
> > * toplev.c (rest_of_compilation): Revert Richard's patch.
>
> I think we'd be better off having reg-stack do a specialized form
> in which the contents of the edge insertions are compared.
As I've mentioned in the privately this won't catch scenarios where the same
instruction is emitted to the end of basic block, that is relatively common.
Even w/o floats the last crossjumping run hits some cases.
Honza
>
>
> r~