[Bug target/56858] alpha looks for NOTE_INSN_EH_REGION notes that cannot exist
steven at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Sat Apr 6 21:56:00 GMT 2013
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56858
--- Comment #2 from Steven Bosscher <steven at gcc dot gnu.org> 2013-04-06 21:55:57 UTC ---
Proposed fix:
Index: config/alpha/alpha.c
===================================================================
--- config/alpha/alpha.c (revision 197532)
+++ config/alpha/alpha.c (working copy)
@@ -8568,11 +8568,10 @@ static void
alpha_handle_trap_shadows (void)
{
struct shadow_summary shadow;
- int trap_pending, exception_nesting;
+ int trap_pending;
rtx i, n;
trap_pending = 0;
- exception_nesting = 0;
shadow.used.i = 0;
shadow.used.fp = 0;
shadow.used.mem = 0;
@@ -8582,25 +8581,9 @@ alpha_handle_trap_shadows (void)
{
if (NOTE_P (i))
{
- switch (NOTE_KIND (i))
- {
- case NOTE_INSN_EH_REGION_BEG:
- exception_nesting++;
- if (trap_pending)
- goto close_shadow;
- break;
-
- case NOTE_INSN_EH_REGION_END:
- exception_nesting--;
- if (trap_pending)
- goto close_shadow;
- break;
-
- case NOTE_INSN_EPILOGUE_BEG:
- if (trap_pending && alpha_tp >= ALPHA_TP_FUNC)
- goto close_shadow;
- break;
- }
+ if (NOTE_KIND (i) == NOTE_INSN_EPILOGUE_BEG
+ && trap_pending && alpha_tp >= ALPHA_TP_FUNC)
+ goto close_shadow;
}
else if (trap_pending)
{
@@ -8683,7 +8666,7 @@ alpha_handle_trap_shadows (void)
}
}
- if ((exception_nesting > 0 || alpha_tp >= ALPHA_TP_FUNC)
+ if (alpha_tp >= ALPHA_TP_FUNC
&& NONJUMP_INSN_P (i)
&& GET_CODE (PATTERN (i)) != USE
&& GET_CODE (PATTERN (i)) != CLOBBER
I can't test this because I have no access to alpha hardware.
More information about the Gcc-bugs
mailing list