OSDN Git Service

* tree.c (cp_valid_lang_attribute): Don't set CLASSTYPE_COM_INTERFACE
[pf3gnuchains/gcc-fork.git] / gcc / bb-reorder.c
index 3fa8a59..9b8a1bd 100644 (file)
    For top-level functions, this is temporary_obstack.
    Separate obstacks are made for nested functions.  */
 
-extern struct obstack *function_obstack;
+extern struct obstack flow_obstack;
 
 
 /* Structure to hold information about lexical scopes.  */
@@ -676,8 +676,8 @@ fixup_reorder_chain ()
       create_basic_block (n_basic_blocks - 1, jump_insn, jump_insn, NULL);
 
       nb = BASIC_BLOCK (n_basic_blocks - 1);
-      nb->global_live_at_start = OBSTACK_ALLOC_REG_SET (function_obstack);
-      nb->global_live_at_end = OBSTACK_ALLOC_REG_SET (function_obstack);
+      nb->global_live_at_start = OBSTACK_ALLOC_REG_SET (&flow_obstack);
+      nb->global_live_at_end = OBSTACK_ALLOC_REG_SET (&flow_obstack);
       nb->local_set = 0;
 
       COPY_REG_SET (nb->global_live_at_start, bb->global_live_at_start);
@@ -1346,14 +1346,16 @@ reorder_basic_blocks ()
   if (n_basic_blocks <= 1)
     return;
 
-  /* We do not currently handle correct re-placement of EH notes.  */
-  for (i = 0; i < n_basic_blocks; i++)
-    {
-      edge e;
-      for (e = BASIC_BLOCK (i)->succ; e ; e = e->succ_next)
-        if (e->flags & EDGE_EH)
-         return;
-    }
+  /* We do not currently handle correct re-placement of EH notes.
+     But that does not matter unless we intend to use them.  */
+  if (flag_exceptions)
+    for (i = 0; i < n_basic_blocks; i++)
+      {
+       edge e;
+       for (e = BASIC_BLOCK (i)->succ; e ; e = e->succ_next)
+         if (e->flags & EDGE_EH)
+           return;
+      }
 
   for (i = 0; i < n_basic_blocks; i++)
     BASIC_BLOCK (i)->aux = xcalloc (1, sizeof (struct reorder_block_def));