From: Jakub Jelinek Date: Fri, 19 Feb 2016 16:25:58 +0000 (+0100) Subject: re PR middle-end/69838 (Lra deletes EH_REGION) X-Git-Tag: basepoints/gcc-7~858 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=de4fcb999f51400b52d3b9b81606a57883c3c1ea;p=thirdparty%2Fgcc.git re PR middle-end/69838 (Lra deletes EH_REGION) PR middle-end/69838 * lra.c (lra_process_new_insns): If non-call exceptions are enabled, call copy_reg_eh_region_note_forward on before and/or after sequences and remove note from insn if it no longer can throw. From-SVN: r233562 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 07b7338826b5..587a53461cff 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,10 @@ 2016-02-19 Jakub Jelinek + PR middle-end/69838 + * lra.c (lra_process_new_insns): If non-call exceptions are enabled, + call copy_reg_eh_region_note_forward on before and/or after sequences + and remove note from insn if it no longer can throw. + PR target/69820 * config/i386/sse.md (VI_512): Only include V64QImode and V32HImode if TARGET_AVX512BW. diff --git a/gcc/lra.c b/gcc/lra.c index ee92ca57e63c..a6ce36529f8d 100644 --- a/gcc/lra.c +++ b/gcc/lra.c @@ -1742,20 +1742,29 @@ lra_process_new_insns (rtx_insn *insn, rtx_insn *before, rtx_insn *after, } if (before != NULL_RTX) { + if (cfun->can_throw_non_call_exceptions) + copy_reg_eh_region_note_forward (insn, before, NULL); emit_insn_before (before, insn); push_insns (PREV_INSN (insn), PREV_INSN (before)); setup_sp_offset (before, PREV_INSN (insn)); } if (after != NULL_RTX) { + if (cfun->can_throw_non_call_exceptions) + copy_reg_eh_region_note_forward (insn, after, NULL); for (last = after; NEXT_INSN (last) != NULL_RTX; last = NEXT_INSN (last)) ; emit_insn_after (after, insn); push_insns (last, insn); setup_sp_offset (after, last); } + if (cfun->can_throw_non_call_exceptions) + { + rtx note = find_reg_note (insn, REG_EH_REGION, NULL_RTX); + if (note && !insn_could_throw_p (insn)) + remove_note (insn, note); + } } - /* Replace all references to register OLD_REGNO in *LOC with pseudo