Commit 92b96838 by Jason Merrill Committed by Jason Merrill

except.c (expand_exception_blocks): Call do_pending_stack_adust.

	* except.c (expand_exception_blocks): Call do_pending_stack_adust.
	(expand_end_catch_block): Likewise.
	(expand_end_eh_spec): Likewise.

From-SVN: r16106
parent 92eca640
Mon Oct 20 12:06:34 1997 Jason Merrill <jason@yorick.cygnus.com>
* except.c (expand_exception_blocks): Call do_pending_stack_adust.
(expand_end_catch_block): Likewise.
(expand_end_eh_spec): Likewise.
Mon Oct 20 11:44:20 1997 Mark Mitchell <mmitchell@usa.net> Mon Oct 20 11:44:20 1997 Mark Mitchell <mmitchell@usa.net>
* decl.c (duplicate_decls): Handle template specializations * decl.c (duplicate_decls): Handle template specializations
......
...@@ -560,6 +560,7 @@ expand_end_catch_block () ...@@ -560,6 +560,7 @@ expand_end_catch_block ()
TREE_TYPE (t) = void_type_node; TREE_TYPE (t) = void_type_node;
RTL_EXPR_RTL (t) = const0_rtx; RTL_EXPR_RTL (t) = const0_rtx;
TREE_SIDE_EFFECTS (t) = 1; TREE_SIDE_EFFECTS (t) = 1;
do_pending_stack_adjust ();
start_sequence_for_rtl_expr (t); start_sequence_for_rtl_expr (t);
if (exceptions_via_longjmp) if (exceptions_via_longjmp)
...@@ -581,6 +582,7 @@ expand_end_catch_block () ...@@ -581,6 +582,7 @@ expand_end_catch_block ()
expand_internal_throw (DECL_RTL (top_label_entry (&caught_return_label_stack))); expand_internal_throw (DECL_RTL (top_label_entry (&caught_return_label_stack)));
} }
do_pending_stack_adjust ();
RTL_EXPR_SEQUENCE (t) = get_insns (); RTL_EXPR_SEQUENCE (t) = get_insns ();
end_sequence (); end_sequence ();
...@@ -925,6 +927,7 @@ expand_end_eh_spec (raises) ...@@ -925,6 +927,7 @@ expand_end_eh_spec (raises)
TREE_TYPE (expr) = void_type_node; TREE_TYPE (expr) = void_type_node;
RTL_EXPR_RTL (expr) = const0_rtx; RTL_EXPR_RTL (expr) = const0_rtx;
TREE_SIDE_EFFECTS (expr) = 1; TREE_SIDE_EFFECTS (expr) = 1;
do_pending_stack_adjust ();
start_sequence_for_rtl_expr (expr); start_sequence_for_rtl_expr (expr);
cont = gen_label_rtx (); cont = gen_label_rtx ();
emit_move_insn (ret, gen_rtx (LABEL_REF, Pmode, cont)); emit_move_insn (ret, gen_rtx (LABEL_REF, Pmode, cont));
...@@ -934,6 +937,7 @@ expand_end_eh_spec (raises) ...@@ -934,6 +937,7 @@ expand_end_eh_spec (raises)
do_function_call (Terminate, NULL_TREE, NULL_TREE); do_function_call (Terminate, NULL_TREE, NULL_TREE);
assemble_external (TREE_OPERAND (Terminate, 0)); assemble_external (TREE_OPERAND (Terminate, 0));
emit_barrier (); emit_barrier ();
do_pending_stack_adjust ();
RTL_EXPR_SEQUENCE (expr) = get_insns (); RTL_EXPR_SEQUENCE (expr) = get_insns ();
end_sequence (); end_sequence ();
...@@ -943,6 +947,7 @@ expand_end_eh_spec (raises) ...@@ -943,6 +947,7 @@ expand_end_eh_spec (raises)
TREE_TYPE (expr) = void_type_node; TREE_TYPE (expr) = void_type_node;
RTL_EXPR_RTL (expr) = const0_rtx; RTL_EXPR_RTL (expr) = const0_rtx;
TREE_SIDE_EFFECTS (expr) = 1; TREE_SIDE_EFFECTS (expr) = 1;
do_pending_stack_adjust ();
start_sequence_for_rtl_expr (expr); start_sequence_for_rtl_expr (expr);
cont = gen_label_rtx (); cont = gen_label_rtx ();
...@@ -987,6 +992,7 @@ expand_end_eh_spec (raises) ...@@ -987,6 +992,7 @@ expand_end_eh_spec (raises)
emit_indirect_jump (ret); emit_indirect_jump (ret);
emit_label (end); emit_label (end);
do_pending_stack_adjust ();
RTL_EXPR_SEQUENCE (expr) = get_insns (); RTL_EXPR_SEQUENCE (expr) = get_insns ();
end_sequence (); end_sequence ();
...@@ -1000,8 +1006,10 @@ expand_end_eh_spec (raises) ...@@ -1000,8 +1006,10 @@ expand_end_eh_spec (raises)
void void
expand_exception_blocks () expand_exception_blocks ()
{ {
do_pending_stack_adjust ();
push_to_sequence (catch_clauses); push_to_sequence (catch_clauses);
expand_leftover_cleanups (); expand_leftover_cleanups ();
do_pending_stack_adjust ();
catch_clauses = get_insns (); catch_clauses = get_insns ();
end_sequence (); end_sequence ();
...@@ -1012,8 +1020,10 @@ expand_exception_blocks () ...@@ -1012,8 +1020,10 @@ expand_exception_blocks ()
if (TYPE_RAISES_EXCEPTIONS (TREE_TYPE (current_function_decl))) if (TYPE_RAISES_EXCEPTIONS (TREE_TYPE (current_function_decl)))
{ {
expand_end_eh_spec (TYPE_RAISES_EXCEPTIONS (TREE_TYPE (current_function_decl))); expand_end_eh_spec (TYPE_RAISES_EXCEPTIONS (TREE_TYPE (current_function_decl)));
do_pending_stack_adjust ();
push_to_sequence (catch_clauses); push_to_sequence (catch_clauses);
expand_leftover_cleanups (); expand_leftover_cleanups ();
do_pending_stack_adjust ();
catch_clauses = get_insns (); catch_clauses = get_insns ();
end_sequence (); end_sequence ();
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment