diff options
author | amacleod <amacleod@138bc75d-0d04-0410-961f-82ee72b054a4> | 1998-12-09 06:15:20 +0000 |
---|---|---|
committer | amacleod <amacleod@138bc75d-0d04-0410-961f-82ee72b054a4> | 1998-12-09 06:15:20 +0000 |
commit | bf763e52429a0416d008c2e940281585133f1bc0 (patch) | |
tree | 0a262ac524c0c187ae000525eec494381a63ee7d /gcc/except.c | |
parent | c2d711cd0a24560b9d355bf3c29c8e7484103717 (diff) | |
download | ppe42-gcc-bf763e52429a0416d008c2e940281585133f1bc0.tar.gz ppe42-gcc-bf763e52429a0416d008c2e940281585133f1bc0.zip |
* except.h (struct handler_info): Add handler_number field
* except.c (gen_exception_label): EH labels no longer need to be
on the permanent obstack.
(get_new_handler): Set the label number field.
(output_exception_table_entry): Regenerate handler label reference
from the label number field.
(init_eh): Remove a blank line
* integrate.c (get_label_from_map): Labels no longer need to be
on the permanent obstack.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@24203 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/except.c')
-rw-r--r-- | gcc/except.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/gcc/except.c b/gcc/except.c index 40aafdd21dc..c7cf3eddce1 100644 --- a/gcc/except.c +++ b/gcc/except.c @@ -616,11 +616,7 @@ rtx gen_exception_label () { rtx lab; - - push_obstacks_nochange (); - end_temporary_allocation (); lab = gen_label_rtx (); - pop_obstacks (); return lab; } @@ -924,6 +920,7 @@ get_new_handler (handler, typeinfo) struct handler_info* ptr; ptr = (struct handler_info *) malloc (sizeof (struct handler_info)); ptr->handler_label = handler; + ptr->handler_number = CODE_LABEL_NUMBER (handler); ptr->type_info = typeinfo; ptr->next = NULL; @@ -2147,8 +2144,11 @@ output_exception_table_entry (file, n) if (handler == NULL) assemble_integer (GEN_INT (0), POINTER_SIZE / BITS_PER_UNIT, 1); else - assemble_integer (handler->handler_label, - POINTER_SIZE / BITS_PER_UNIT, 1); + { + ASM_GENERATE_INTERNAL_LABEL (buf, "L", handler->handler_number); + sym = gen_rtx_SYMBOL_REF (Pmode, buf); + assemble_integer (sym, POINTER_SIZE / BITS_PER_UNIT, 1); + } if (flag_new_exceptions) { @@ -2394,7 +2394,6 @@ check_exception_handler_labels () void init_eh () { - first_rethrow_symbol = create_rethrow_ref (0); final_rethrow = gen_exception_label (); last_rethrow_symbol = create_rethrow_ref (CODE_LABEL_NUMBER (final_rethrow)); |