aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJason Merrill <jason@yorick.cygnus.com>1997-10-20 19:14:09 +0000
committerJason Merrill <jason@gcc.gnu.org>1997-10-20 15:14:09 -0400
commit92b968383e5940e16ef7d7767b018df4119d4906 (patch)
treea298bcf2f9bd894953184b9cffc55a2df3b5eced /gcc
parent92eca6404c697e48a0be9ce9d083ecd4c6732e01 (diff)
downloadgcc-92b968383e5940e16ef7d7767b018df4119d4906.zip
gcc-92b968383e5940e16ef7d7767b018df4119d4906.tar.gz
gcc-92b968383e5940e16ef7d7767b018df4119d4906.tar.bz2
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/except.c10
2 files changed, 16 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 5672289..30c8a40 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+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>
* decl.c (duplicate_decls): Handle template specializations
diff --git a/gcc/cp/except.c b/gcc/cp/except.c
index ef4b6e0..fe0a1b5 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 ();
}