except.c (call_get_eh_context): Don't mess with sequences.
authorJason Merrill <jason@yorick.cygnus.com>
Fri, 12 Dec 1997 09:23:52 +0000 (09:23 +0000)
committerJason Merrill <jason@gcc.gnu.org>
Fri, 12 Dec 1997 09:23:52 +0000 (04:23 -0500)
* except.c (call_get_eh_context): Don't mess with sequences.
(emit_eh_context): Include the call in the sequence here.

From-SVN: r17070

gcc/ChangeLog
gcc/except.c

index 87793b7..dcac290 100644 (file)
@@ -1,3 +1,8 @@
+Fri Dec 12 01:19:48 1997  Jason Merrill  <jason@yorick.cygnus.com>
+
+       * except.c (call_get_eh_context): Don't mess with sequences.
+       (emit_eh_context): Include the call in the sequence here.
+
 1997-12-11  Paul Eggert  <eggert@twinsun.com>
 
        * collect2.c (write_c_file_glob): Allocate initial frame object
index 95f8b2c..dbba31b 100644 (file)
@@ -707,15 +707,13 @@ add_partial_entry (handler)
   pop_obstacks ();
 }
 
-/* Emit code to get EH context to current function.  Should only be used
-   by emit_eh_context.  */
+/* Emit code to get EH context to current function.  */
 
 static rtx
 call_get_eh_context ()
 {
   static tree fn;
   tree expr;
-  rtx ehc, reg, insns;
 
   if (fn == NULL_TREE)
     {
@@ -741,16 +739,7 @@ call_get_eh_context ()
                expr, NULL_TREE, NULL_TREE);
   TREE_SIDE_EFFECTS (expr) = 1;
 
-  start_sequence ();
-  ehc = expand_expr (expr, NULL_RTX, VOIDmode, 0);
-  reg = copy_to_reg (ehc);
-
-  insns = get_insns ();
-  end_sequence ();
-
-  emit_insns_before (insns, get_first_nonparm_insn ());
-
-  return reg;
+  return copy_to_reg (expand_expr (expr, NULL_RTX, VOIDmode, 0));
 }
 
 /* Get a reference to the EH context.
@@ -1678,11 +1667,12 @@ emit_eh_context ()
          {
            rtx insns;
            
-           /* If this is the first use insn, emit the call. */
+           start_sequence ();
+
+           /* If this is the first use insn, emit the call here. */
            if (ehc == 0)
              ehc = call_get_eh_context ();
 
-           start_sequence ();
            emit_move_insn (XEXP (reg, 0), ehc);
            insns = get_insns ();
            end_sequence ();