PATCH: Re: ICE in 920624-1.c with -O3 -funroll-loops on vax-dec-ultrix4.3

Jan Hubicka
Wed Jan 16 09:49:00 GMT 2002

> > My approach in the cfg is to keep the tables around and sweep them once done
> > with CSE, but I guess it is easier to zap them to NOTE_INSN_DELETED_LABEL instead.
> > I plan to do that move on the cfg branch.
> > 
> > In your case all you need is to use delete_insn_chain for the two insns that
> > cares to create the note instead.
> We have
> (jump (pc) (label_ref 1))
> (code_label 1)
> (jump_insn (addr_diff_vec:HI (label_ref: 1)
>   ...
> You are suggesting deleting first two with NOTE_INSN_DELETED_LABEL?
> Of course, this would be done only when the jump goes to the next insn.
> This still leaves the jump table in live code which I don't like.

No, just remove the second two using remove_insn_chain call - that should
turn label to NOTE_INSN_DELETED_LABEL if it is still referenced and remove
the jumptable - that should be what you are looking for.
> Another alternative might be to add a code_label after the jump table
> and add a new jump before the first jump.  This should make the three
> insn dead.  Would this be safer?

That should work too, but it is bit complex.

> Dave
> -- 
> J. David Anglin                        
> National Research Council of Canada              (613) 990-0752 (FAX: 952-6605)

More information about the Gcc-bugs mailing list