OSDN Git Service

Thu Oct 29 14:10:22 EST 1998 Andrew MacLeod <amacleod@cygnus.com>
authoramacleod <amacleod@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 29 Oct 1998 11:21:20 +0000 (11:21 +0000)
committeramacleod <amacleod@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 29 Oct 1998 11:21:20 +0000 (11:21 +0000)
        * except.c (emit_eh_context): Make the EH context register stay alive
        at -O0 so stupid.c doesn't get confused.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@23423 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/except.c

index 1dbc93a..b01e4ea 100644 (file)
@@ -1,3 +1,8 @@
+Thu Oct 29 14:10:22 EST 1998  Andrew MacLeod  <amacleod@cygnus.com>
+
+       * except.c (emit_eh_context): Make the EH context register stay alive
+       at -O0 so stupid.c doesn't get confused.
+
 1998-10-29 Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>
 
        * emit-rtl.c (try_split): Do not try to split a BARRIER.
index 867b4a5..d07d6bf 100644 (file)
@@ -2094,6 +2094,14 @@ emit_eh_context ()
            end_sequence ();
 
            emit_insns_before (insns, insn);
+
+            /* At -O0, we must make the context register stay alive so
+               that the stupid.c register allocator doesn't get confused. */
+            if (obey_regdecls != 0)
+              {
+                insns = gen_rtx_USE (GET_MODE (XEXP (reg,0)), XEXP (reg,0));
+                emit_insn_before (insns, get_last_insn ());
+              }
          }
       }
 }