OSDN Git Service

2004-12-14 H.J. Lu <hongjiu.lu@intel.com>
[pf3gnuchains/gcc-fork.git] / gcc / cfgloop.c
index b995b39..26a9cde 100644 (file)
@@ -24,6 +24,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 #include "tm.h"
 #include "rtl.h"
 #include "hard-reg-set.h"
+#include "obstack.h"
 #include "basic-block.h"
 #include "toplev.h"
 #include "cfgloop.h"
@@ -45,7 +46,7 @@ static int flow_loop_nodes_find (basic_block, struct loop *);
 static void flow_loop_pre_header_scan (struct loop *);
 static basic_block flow_loop_pre_header_find (basic_block);
 static int flow_loop_level_compute (struct loop *);
-static int flow_loops_level_compute (struct loops *);
+static void flow_loops_level_compute (struct loops *);
 static void establish_preds (struct loop *);
 static void canonicalize_loop_headers (void);
 static bool glb_enum_p (basic_block, void *);
@@ -172,8 +173,7 @@ flow_loops_dump (const struct loops *loops, FILE *file, void (*loop_dump_aux) (c
   if (! num_loops || ! file)
     return;
 
-  fprintf (file, ";; %d loops found, %d levels\n",
-          num_loops, loops->levels);
+  fprintf (file, ";; %d loops found\n", num_loops);
 
   for (i = 0; i < num_loops; i++)
     {
@@ -591,10 +591,10 @@ flow_loop_level_compute (struct loop *loop)
    hierarchy tree specified by LOOPS.  Return the maximum enclosed loop
    level.  */
 
-static int
+static void
 flow_loops_level_compute (struct loops *loops)
 {
-  return flow_loop_level_compute (loops->tree_root);
+  flow_loop_level_compute (loops->tree_root);
 }
 
 /* Scan a single natural loop specified by LOOP collecting information
@@ -952,7 +952,7 @@ flow_loops_find (struct loops *loops, int flags)
 
       /* Assign the loop nesting depth and enclosed loop level for each
         loop.  */
-      loops->levels = flow_loops_level_compute (loops);
+      flow_loops_level_compute (loops);
 
       /* Scan the loops.  */
       for (i = 1; i < num_loops; i++)
@@ -973,20 +973,6 @@ flow_loops_find (struct loops *loops, int flags)
   return loops->num;
 }
 
-/* Update the information regarding the loops in the CFG
-   specified by LOOPS.  */
-
-int
-flow_loops_update (struct loops *loops, int flags)
-{
-  /* One day we may want to update the current loop data.  For now
-     throw away the old stuff and rebuild what we need.  */
-  if (loops->parray)
-    flow_loops_free (loops);
-
-  return flow_loops_find (loops, flags);
-}
-
 /* Return nonzero if basic block BB belongs to LOOP.  */
 bool
 flow_bb_inside_loop_p (const struct loop *loop, const basic_block bb)
@@ -1512,14 +1498,7 @@ verify_loop_structure (struct loops *loops)
 edge
 loop_latch_edge (const struct loop *loop)
 {
-  edge e;
-  edge_iterator ei;
-
-  FOR_EACH_EDGE (e, ei, loop->header->preds)
-    if (e->src == loop->latch)
-      break;
-
-  return e;
+  return find_edge (loop->latch, loop->header);
 }
 
 /* Returns preheader edge of LOOP.  */