From e3947b349cbbe750897b8c81d2e0dfeada17bf84 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Thu, 1 Sep 2005 16:35:19 -0700 Subject: [PATCH] re PR middle-end/23676 (ICE: "missing REG_EH_REGION note in the end of bb") PR 23676 * reload1.c (reload_as_needed): Check !CALL_P before calling fixup_eh_region_note. * rtlanal.c (may_trap_p): SUBREG by itself cannot trap. From-SVN: r103751 --- gcc/ChangeLog | 7 +++++++ gcc/reload1.c | 2 +- gcc/rtlanal.c | 1 + 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9d20f4b542a7..952d7e1b6804 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2005-09-01 Richard Henderson + + PR 23676 + * reload1.c (reload_as_needed): Check !CALL_P before calling + fixup_eh_region_note. + * rtlanal.c (may_trap_p): SUBREG by itself cannot trap. + 2005-09-01 DJ Delorie * varasm.c (output_constant): Let the target resolve diff --git a/gcc/reload1.c b/gcc/reload1.c index eb2ce0f3d747..236afcef86a4 100644 --- a/gcc/reload1.c +++ b/gcc/reload1.c @@ -3926,7 +3926,7 @@ reload_as_needed (int live_known) subst_reloads (insn); /* Adjust the exception region notes for loads and stores. */ - if (flag_non_call_exceptions) + if (flag_non_call_exceptions && !CALL_P (insn)) fixup_eh_region_note (insn, prev, next); /* If this was an ASM, make sure that all the reload insns diff --git a/gcc/rtlanal.c b/gcc/rtlanal.c index 6a3be0e7918d..92068a1fd31a 100644 --- a/gcc/rtlanal.c +++ b/gcc/rtlanal.c @@ -2166,6 +2166,7 @@ may_trap_p (rtx x) case NEG: case ABS: + case SUBREG: /* These operations don't trap even with floating point. */ break; -- 2.43.5