combine.c (distribute_notes): If non-call exceptions, put the note on the trapping instruction.

* combine.c (distribute_notes) [REG_EH_REGION]: If non-call
        exceptions, put the note on the trapping instruction.

From-SVN: r40907
This commit is contained in:
Richard Henderson 2001-03-27 21:40:43 -08:00 committed by Richard Henderson
parent 894d0e3925
commit 662795a85f
2 changed files with 22 additions and 0 deletions

View file

@ -20,6 +20,9 @@
* except.h (flag_non_call_exceptions): Move ...
* flags.h: ... here.
* combine.c (distribute_notes) [REG_EH_REGION]: If non-call
exceptions, put the note on the trapping instruction.
2001-03-27 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* configure.in: Don't check for bcopy.

View file

@ -12074,6 +12074,25 @@ distribute_notes (notes, from_insn, i3, i2, elim_i2, elim_i1)
break;
case REG_EH_REGION:
/* These notes must remain with the call or trapping instruction. */
if (GET_CODE (i3) == CALL_INSN)
place = i3;
else if (i2 && GET_CODE (i2) == CALL_INSN)
place = i2;
else if (flag_non_call_exceptions)
{
if (may_trap_p (i3))
place = i3;
else if (i2 && may_trap_p (i2))
place = i2;
/* ??? Otherwise assume we've combined things such that we
can now prove that the instructions can't trap. Drop the
note in this case. */
}
else
abort ();
break;
case REG_EH_RETHROW:
case REG_NORETURN:
/* These notes must remain with the call. It should not be