From: Richard Henderson Date: Wed, 28 Mar 2001 05:40:43 +0000 (-0800) Subject: combine.c (distribute_notes): If non-call exceptions, put the note on the trapping... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=662795a85f138c84aa9505ba731cf5fd25dd24eb;p=gcc.git 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 156756fb9a5..92105e086ec 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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 * configure.in: Don't check for bcopy. diff --git a/gcc/combine.c b/gcc/combine.c index 4a148b9ce7a..4aa7721e880 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -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