[bugs] Another ICE
Graham Stott
grahams@redhat.com
Thu May 31 09:32:00 GMT 2001
Jan Hubicka wrote:
>
> Content-Description: message body text
> >
> > Hi Honza,
> >
> > I got another ICE with yesterday evenings version of gcc :-((
> >
> > Egbert.
> >
> Hi,
> the bug is caused by gcse, that emits result of gen_move_insn and then update
> basic block info for last insn. In case gen_move_insn used sequence of insns,
> others are kept w/o any info.
>
> (hmm, ugly - perhaps we can avoid gcse from using the BASIC_BLOCK_FOR_INSN
> completely? I can't imagince case gcse is doing transformation and don't know
> basic block information and keeping that array up-to-date is expensive)
>
> Honza
>
I'm puzzled why doesn't set_block_for_new_insns DTRT because it is supposed to
handle a sequence. I think your change is just papering over a bug.
Looking at set_block_for_new_insns I see that it stop scanning backwards if it
finds a NOTE.
/* Scan the previous instructions setting the block number until we find
an instruction that has the block number set, or we find a note
of any kind. */
for (insn = PREV_INSN (insn); insn != NULL_RTX; insn = PREV_INSN (insn))
{
if (GET_CODE (insn) == NOTE)
break;
....
}
Would the generated sequence by any chance of had a NOTE?
Graham
More information about the Gcc-patches
mailing list