Commit 0177de87 by Andrew MacLeod Committed by Andrew Macleod

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
parent a91d8b95
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> Tue Dec 8 22:04:33 1998 Jim Wilson <wilson@cygnus.com>
* i960/i960.h (CONST_COSTS, case CONST_INT): Accept power2_operand * i960/i960.h (CONST_COSTS, case CONST_INT): Accept power2_operand
......
...@@ -616,11 +616,7 @@ rtx ...@@ -616,11 +616,7 @@ rtx
gen_exception_label () gen_exception_label ()
{ {
rtx lab; rtx lab;
push_obstacks_nochange ();
end_temporary_allocation ();
lab = gen_label_rtx (); lab = gen_label_rtx ();
pop_obstacks ();
return lab; return lab;
} }
...@@ -924,6 +920,7 @@ get_new_handler (handler, typeinfo) ...@@ -924,6 +920,7 @@ get_new_handler (handler, typeinfo)
struct handler_info* ptr; struct handler_info* ptr;
ptr = (struct handler_info *) malloc (sizeof (struct handler_info)); ptr = (struct handler_info *) malloc (sizeof (struct handler_info));
ptr->handler_label = handler; ptr->handler_label = handler;
ptr->handler_number = CODE_LABEL_NUMBER (handler);
ptr->type_info = typeinfo; ptr->type_info = typeinfo;
ptr->next = NULL; ptr->next = NULL;
...@@ -2147,8 +2144,11 @@ output_exception_table_entry (file, n) ...@@ -2147,8 +2144,11 @@ output_exception_table_entry (file, n)
if (handler == NULL) if (handler == NULL)
assemble_integer (GEN_INT (0), POINTER_SIZE / BITS_PER_UNIT, 1); assemble_integer (GEN_INT (0), POINTER_SIZE / BITS_PER_UNIT, 1);
else 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) if (flag_new_exceptions)
{ {
...@@ -2394,7 +2394,6 @@ check_exception_handler_labels () ...@@ -2394,7 +2394,6 @@ check_exception_handler_labels ()
void void
init_eh () init_eh ()
{ {
first_rethrow_symbol = create_rethrow_ref (0); first_rethrow_symbol = create_rethrow_ref (0);
final_rethrow = gen_exception_label (); final_rethrow = gen_exception_label ();
last_rethrow_symbol = create_rethrow_ref (CODE_LABEL_NUMBER (final_rethrow)); last_rethrow_symbol = create_rethrow_ref (CODE_LABEL_NUMBER (final_rethrow));
......
...@@ -172,7 +172,8 @@ void set_exception_version_code PROTO((int)); ...@@ -172,7 +172,8 @@ void set_exception_version_code PROTO((int));
typedef struct handler_info typedef struct handler_info
{ {
rtx handler_label; rtx handler_label;
int handler_number;
void *type_info; void *type_info;
struct handler_info *next; struct handler_info *next;
} handler_info; } handler_info;
......
...@@ -99,12 +99,7 @@ get_label_from_map (map, i) ...@@ -99,12 +99,7 @@ get_label_from_map (map, i)
rtx x = map->label_map[i]; rtx x = map->label_map[i];
if (x == NULL_RTX) if (x == NULL_RTX)
{ x = map->label_map[i] = gen_label_rtx();
push_obstacks_nochange ();
end_temporary_allocation ();
x = map->label_map[i] = gen_label_rtx();
pop_obstacks ();
}
return x; return x;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment