[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