+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
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)
{
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.
{
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 ();