except.h (struct handler_info): Add handler_number field
* 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. From-SVN: r24203
This commit is contained in:
parent
a91d8b9534
commit
0177de8737
@ -1,3 +1,15 @@
|
||||
Wed Dec 9 09:12:40 EST 1998 Andrew MacLeod <amacleod@cygnus.com>
|
||||
|
||||
* 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.
|
||||
|
||||
Tue Dec 8 22:04:33 1998 Jim Wilson <wilson@cygnus.com>
|
||||
|
||||
* i960/i960.h (CONST_COSTS, case CONST_INT): Accept power2_operand
|
||||
|
13
gcc/except.c
13
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));
|
||||
|
@ -173,6 +173,7 @@ void set_exception_version_code PROTO((int));
|
||||
typedef struct handler_info
|
||||
{
|
||||
rtx handler_label;
|
||||
int handler_number;
|
||||
void *type_info;
|
||||
struct handler_info *next;
|
||||
} handler_info;
|
||||
|
@ -99,12 +99,7 @@ get_label_from_map (map, i)
|
||||
rtx x = map->label_map[i];
|
||||
|
||||
if (x == NULL_RTX)
|
||||
{
|
||||
push_obstacks_nochange ();
|
||||
end_temporary_allocation ();
|
||||
x = map->label_map[i] = gen_label_rtx();
|
||||
pop_obstacks ();
|
||||
}
|
||||
|
||||
return x;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user