aboutsummaryrefslogtreecommitdiff
path: root/gcc/except.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/except.c')
-rw-r--r--gcc/except.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/gcc/except.c b/gcc/except.c
index 2d26e9e..5f2c61a 100644
--- a/gcc/except.c
+++ b/gcc/except.c
@@ -431,6 +431,12 @@ rtx exception_handler_labels;
rtx current_function_ehc;
+/* The labels generated by expand_builtin_eh_stub and
+ expand_builtin_eh_stub_old. */
+
+rtx current_function_eh_stub_label;
+rtx current_function_eh_old_stub_label;
+
/* A stack used for keeping track of the currently active exception
handling region. As each exception region is started, an entry
describing the region is pushed onto this stack. The current
@@ -2148,6 +2154,8 @@ init_eh_for_function ()
caught_return_label_stack = 0;
protect_list = NULL_TREE;
current_function_ehc = NULL_RTX;
+ current_function_eh_stub_label = NULL_RTX;
+ current_function_eh_old_stub_label = NULL_RTX;
}
/* Save some of the per-function EH info into the save area denoted by
@@ -2170,6 +2178,8 @@ save_eh_status (p)
p->caught_return_label_stack = caught_return_label_stack;
p->protect_list = protect_list;
p->ehc = current_function_ehc;
+ p->eh_stub_label = current_function_eh_stub_label;
+ p->eh_old_stub_label = current_function_eh_old_stub_label;
init_eh_for_function ();
}
@@ -2193,6 +2203,8 @@ restore_eh_status (p)
ehstack = p->ehstack;
catchstack = p->catchstack;
current_function_ehc = p->ehc;
+ current_function_eh_stub_label = p->eh_stub_label;
+ current_function_eh_old_stub_label = p->eh_old_stub_label;
}
/* This section is for the exception handling specific optimization
@@ -2502,6 +2514,8 @@ expand_builtin_eh_stub_old ()
rtx after_stub = gen_label_rtx ();
rtx handler, offset;
+ current_function_eh_old_stub_label = stub_start;
+
emit_jump (after_stub);
emit_label (stub_start);
@@ -2521,6 +2535,8 @@ expand_builtin_eh_stub ()
rtx handler, offset;
rtx temp;
+ current_function_eh_stub_label = stub_start;
+
emit_jump (after_stub);
emit_label (stub_start);