OSDN Git Service

* gcc.c (LIBGCC_SPEC): If REAL_LIBGCC_SPEC is defined, and
[pf3gnuchains/gcc-fork.git] / gcc / loop-init.c
index 6cae157..eed3e19 100644 (file)
@@ -1,5 +1,5 @@
 /* Loop optimizer initialization routines.
-   Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
 
 This file is part of GCC.
 
@@ -31,8 +31,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 /* Initialize loop optimizer.  */
 
 struct loops *
-loop_optimizer_init (dumpfile)
-     FILE *dumpfile;
+loop_optimizer_init (FILE *dumpfile)
 {
   struct loops *loops = xcalloc (1, sizeof (struct loops));
   edge e;
@@ -49,7 +48,9 @@ loop_optimizer_init (dumpfile)
     {
       /* No loops.  */
       flow_loops_free (loops);
+      free_dominance_info (CDI_DOMINATORS);
       free (loops);
+
       return NULL;
     }
 
@@ -59,11 +60,8 @@ loop_optimizer_init (dumpfile)
   free (loops->cfg.dfs_order);
   loops->cfg.dfs_order = NULL;
 
-  /* Initialize structures for layout changes.  */
-  cfg_layout_initialize (loops);
-
   /* Create pre-headers.  */
-  create_preheaders (loops, CP_SIMPLE_PREHEADERS | CP_INSIDE_CFGLAYOUT);
+  create_preheaders (loops, CP_SIMPLE_PREHEADERS);
 
   /* Force all latches to have only single successor.  */
   force_single_succ_latches (loops);
@@ -75,7 +73,7 @@ loop_optimizer_init (dumpfile)
   flow_loops_dump (loops, dumpfile, NULL, 1);
 
 #ifdef ENABLE_CHECKING
-  verify_dominators (loops->cfg.dom);
+  verify_dominators (CDI_DOMINATORS);
   verify_loop_structure (loops);
 #endif
 
@@ -84,31 +82,27 @@ loop_optimizer_init (dumpfile)
 
 /* Finalize loop optimizer.  */
 void
-loop_optimizer_finalize (loops, dumpfile)
-     struct loops *loops;
-     FILE *dumpfile;
+loop_optimizer_finalize (struct loops *loops, FILE *dumpfile)
 {
-  basic_block bb;
+  unsigned i;
 
-  /* Finalize layout changes.  */
-  /* Make chain.  */
-  FOR_EACH_BB (bb)
-    if (bb->next_bb != EXIT_BLOCK_PTR)
-      RBI (bb)->next = bb->next_bb;
+  if (!loops)
+    return;
+
+  for (i = 1; i < loops->num; i++)
+    if (loops->parray[i])
+      free_simple_loop_desc (loops->parray[i]);
 
   /* Another dump.  */
   flow_loops_dump (loops, dumpfile, NULL, 1);
 
   /* Clean up.  */
   flow_loops_free (loops);
+  free_dominance_info (CDI_DOMINATORS);
   free (loops);
-  /* Finalize changes.  */
-  cfg_layout_finalize ();
 
   /* Checking.  */
 #ifdef ENABLE_CHECKING
   verify_flow_info ();
 #endif
 }
-