This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
| Other format: | [Raw text] | |
>
> Andrew Pinski <pinskia@physics.uc.edu> writes:
>
> > >
> > > > Hi,
> > > > thanks for testing. I've bootstrapped/regtested this variant of patch
> > > > and comitted it as obvious.
> > >
> > > Since this is an insn, we should not be copying it as it is just a link to that
> > > insn.
> > >
> > > Attached is a patch which fixes the ICE though I have not bootstrapped and tested
> > > it yet.
> >
> > Lets try to attach the patch this time.
>
> It seems to me this code should just be
>
> for (link = REG_NOTES (insn); link; link = XEXP (link, 1))
> if (REG_NOTE_KIND (link) != REG_LABEL)
> {
> if (GET_CODE (link) == EXPR_LIST)
> REG_NOTES (new)
> = gen_rtx_EXPR_LIST (REG_NOTE_KIND (link),
> copy_rtx (XEXP (link, 0)), REG_NOTES (new));
> else
> REG_NOTES (new)
> = gen_rtx_INSN_LIST (REG_NOTE_KIND (link),
> copy_rtx (XEXP (link, 0)), REG_NOTES (new));
> }
>
> What do we expect to find in a REG_NOTE that requires the machinery of
> copy_insn_1? And calling copy_insn_1 without going through copy_insn
> looks very wrong.
Here is a better patch which also speeds up this code by fixing up
the libcall notes in that loop.
I tested it on the preprocessed source that Andreas sent me but
I don't have time to do a full bootstrap till tommorrow.
ChangeLog:
* emit-rtl.c (emit_copy_of_insn_after): Copy REG_LIBCALL note specially.
Copy REG_RETVAL not specially and fix it and the referencing REG_LIBCALL note.
Use copy_rtx instead of copy_insn_1 for EXPR_LIST note.
Abort if we get a INSN_LIST for the note.
Thanks,
Andrew Pinski
Attachment:
fixemitrtl.diff.txt
Description: RCS/CVS diff output text
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |