diff options
Diffstat (limited to 'gcc/except.c')
-rw-r--r-- | gcc/except.c | 16 |
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); |