Andrew Pinski <[EMAIL PROTECTED]> 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.
> Index: emit-rtl.c > =================================================================== > --- emit-rtl.c (revision 120287) > +++ emit-rtl.c (working copy) > @@ -5302,7 +5302,7 @@ > else > REG_NOTES (new) > = gen_rtx_INSN_LIST (REG_NOTE_KIND (link), > - copy_insn_1 (XEXP (link, 0)), REG_NOTES (new)); > + XEXP (link, 0), REG_NOTES (new)); > } > > /* Fix the libcall sequences. */ 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. Ian