On Wed, Jan 11, 2012 at 01:59:59PM +0100, Eric Botcazou wrote:
> > I'd find that very fragile.  E.g. distribute_notes itself reverses the
> > order of all notes, and for no REG_NOTES I think we rely on any ordering.
> 
> AFAIK distribute_notes is the only routine that redistributes the RTL notes 
> for 
> a fixed insn, so I'm a little skeptical about the purported fragility here.
> My point is that the complexity should be in fixup_args_size_notes instead of 
> distribute_notes.  Tentative patch attached.

If you prefer to do it this way, fine, but I think we should have some
ENABLE_RTL_CHECKING verification somewhere that the REG_NORETURN vs.
REG_ARGS_SIZE ordering is always correct.

>       PR bootstrap/51796
>       * calls.c (emit_call_1): Make sure REG_NORETURN note comes first.
>       * combine.c (distribute_notes): If i3 is a noreturn call, allow
>       old_size to be equal to args_size if !ACCUMULATE_OUTGOING_ARGS.
>       * expr.c (fixup_args_size_notes): Put REG_ARGS_SIZE notes on
>       noreturn calls even when the delta is 0.
>       * rtlanal.c (find_and_remove_reg_note): New function.
>       * rtl.h (find_and_remove_reg_note): Declare it.

        Jakub

Reply via email to