/* Loop optimizer initialization routines.
- Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
+ Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
This file is part of GCC.
#include "tm.h"
#include "rtl.h"
#include "hard-reg-set.h"
+#include "obstack.h"
#include "basic-block.h"
#include "cfgloop.h"
#include "cfglayout.h"
{
struct loops *loops = xcalloc (1, sizeof (struct loops));
edge e;
+ edge_iterator ei;
static bool first_time = true;
if (first_time)
/* Avoid annoying special cases of edges going to exit
block. */
- for (e = EXIT_BLOCK_PTR->pred; e; e = e->pred_next)
- if ((e->flags & EDGE_FALLTHRU) && e->src->succ->succ_next)
+
+ for (ei = ei_start (EXIT_BLOCK_PTR->preds); (e = ei_safe_edge (ei)); )
+ if ((e->flags & EDGE_FALLTHRU) && !single_succ_p (e->src))
split_edge (e);
+ else
+ ei_next (&ei);
/* Find the loops. */
- if (flow_loops_find (loops, LOOP_TREE) <= 1)
+ if (flow_loops_find (loops) <= 1)
{
/* No loops. */
flow_loops_free (loops);