From: Richard Biener Date: Tue, 28 Jun 2022 11:08:33 +0000 (+0200) Subject: rtl-optimization/106082 - preserve EH note for no non-local goto X-Git-Tag: basepoints/gcc-14~5865 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0282c4acf720e4cc073cf95594aa890444c5ca82;p=thirdparty%2Fgcc.git rtl-optimization/106082 - preserve EH note for no non-local goto The following makes sure we preserve EH notes on call insns that indicate the call doesn't perform a non-local goto when distributing notes after combining insns. 2022-06-28 Richard Biener PR rtl-optimization/106082 * combine.cc (distribute_notes): Preserve notes when they indicate a call doesn't perform a non-local goto. --- diff --git a/gcc/combine.cc b/gcc/combine.cc index a8305273e44..a5fabf397f7 100644 --- a/gcc/combine.cc +++ b/gcc/combine.cc @@ -14218,8 +14218,10 @@ distribute_notes (rtx notes, rtx_insn *from_insn, rtx_insn *i3, rtx_insn *i2, gcc_assert (from_insn == i3); /* We are making sure there is a single effective REG_EH_REGION note and it's valid to put it on i3. */ - if (!insn_could_throw_p (from_insn)) - /* Throw away stra notes on insns that can never throw. */ + if (!insn_could_throw_p (from_insn) + && !(lp_nr == INT_MIN && can_nonlocal_goto (from_insn))) + /* Throw away stray notes on insns that can never throw or + make a nonlocal goto. */ ; else {