]> gcc.gnu.org Git - gcc.git/commitdiff
except.h (struct handler_info): Add handler_number field
authorAndrew MacLeod <amacleod@cygnus.com>
Wed, 9 Dec 1998 06:15:20 +0000 (06:15 +0000)
committerAndrew Macleod <amacleod@gcc.gnu.org>
Wed, 9 Dec 1998 06:15:20 +0000 (06:15 +0000)
* 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

gcc/ChangeLog
gcc/except.c
gcc/except.h
gcc/integrate.c

index 3b587720ba8bb0cd7cfc67d5ffe2fd72a4fed191..332e22c6f7b42aff830908a2477ca8ebf32afd64 100644 (file)
@@ -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
index 40aafdd21dce628ddd541e28a9868806a1f04169..c7cf3eddce12cbc49417f4cd78f6fcaabbdf1061 100644 (file)
@@ -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));
index 5b4b3db4ed240d60bd8869436982f766df87cd6f..62796fefb3a54b13ea2263ca4969b5a268e826e1 100644 (file)
@@ -172,7 +172,8 @@ void set_exception_version_code                 PROTO((int));
 
 typedef struct handler_info 
 {
-  rtx  handler_label;
+  rtx handler_label;
+  int handler_number;
   void *type_info;
   struct handler_info *next;
 } handler_info;
index 702e5fa4f513ad63c3e1d1601dcd2cd3044b6f36..4c1464cb644dc8de8021b08072086b743559af73 100644 (file)
@@ -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 ();
-    }
+    x = map->label_map[i] = gen_label_rtx();
 
   return x;
 }
This page took 0.074564 seconds and 5 git commands to generate.