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

Reply via email to