From 92b968383e5940e16ef7d7767b018df4119d4906 Mon Sep 17 00:00:00 2001 From: Jason Merrill Date: Mon, 20 Oct 1997 19:14:09 +0000 Subject: [PATCH] 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 --- gcc/cp/ChangeLog | 6 ++++++ gcc/cp/except.c | 10 ++++++++++ 2 files changed, 16 insertions(+) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 56722890d11..30c8a4040e0 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +Mon Oct 20 12:06:34 1997 Jason Merrill + + * 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 * decl.c (duplicate_decls): Handle template specializations diff --git a/gcc/cp/except.c b/gcc/cp/except.c index ef4b6e015f8..fe0a1b5e038 100644 --- a/gcc/cp/except.c +++ b/gcc/cp/except.c @@ -560,6 +560,7 @@ expand_end_catch_block () TREE_TYPE (t) = void_type_node; RTL_EXPR_RTL (t) = const0_rtx; TREE_SIDE_EFFECTS (t) = 1; + do_pending_stack_adjust (); start_sequence_for_rtl_expr (t); if (exceptions_via_longjmp) @@ -581,6 +582,7 @@ expand_end_catch_block () expand_internal_throw (DECL_RTL (top_label_entry (&caught_return_label_stack))); } + do_pending_stack_adjust (); RTL_EXPR_SEQUENCE (t) = get_insns (); end_sequence (); @@ -925,6 +927,7 @@ expand_end_eh_spec (raises) TREE_TYPE (expr) = void_type_node; RTL_EXPR_RTL (expr) = const0_rtx; TREE_SIDE_EFFECTS (expr) = 1; + do_pending_stack_adjust (); start_sequence_for_rtl_expr (expr); cont = gen_label_rtx (); emit_move_insn (ret, gen_rtx (LABEL_REF, Pmode, cont)); @@ -934,6 +937,7 @@ expand_end_eh_spec (raises) do_function_call (Terminate, NULL_TREE, NULL_TREE); assemble_external (TREE_OPERAND (Terminate, 0)); emit_barrier (); + do_pending_stack_adjust (); RTL_EXPR_SEQUENCE (expr) = get_insns (); end_sequence (); @@ -943,6 +947,7 @@ expand_end_eh_spec (raises) TREE_TYPE (expr) = void_type_node; RTL_EXPR_RTL (expr) = const0_rtx; TREE_SIDE_EFFECTS (expr) = 1; + do_pending_stack_adjust (); start_sequence_for_rtl_expr (expr); cont = gen_label_rtx (); @@ -987,6 +992,7 @@ expand_end_eh_spec (raises) emit_indirect_jump (ret); emit_label (end); + do_pending_stack_adjust (); RTL_EXPR_SEQUENCE (expr) = get_insns (); end_sequence (); @@ -1000,8 +1006,10 @@ expand_end_eh_spec (raises) void expand_exception_blocks () { + do_pending_stack_adjust (); push_to_sequence (catch_clauses); expand_leftover_cleanups (); + do_pending_stack_adjust (); catch_clauses = get_insns (); end_sequence (); @@ -1012,8 +1020,10 @@ expand_exception_blocks () if (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); expand_leftover_cleanups (); + do_pending_stack_adjust (); catch_clauses = get_insns (); end_sequence (); } -- 2.30.2