- finally understand HOW n-input nodes made the Follower -> Leader transition
[libfirm] / ir / be / beblocksched.c
index 953ca6d..38fc4de 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 1995-2007 University of Karlsruhe.  All right reserved.
+ * Copyright (C) 1995-2008 University of Karlsruhe.  All right reserved.
  *
  * This file is part of libFirm.
  *
@@ -59,9 +59,8 @@
 #include "bemodule.h"
 #include "be.h"
 
-#include <libcore/lc_opts.h>
-#include <libcore/lc_opts_enum.h>
-#include <libcore/lc_timing.h>
+#include "lc_opts.h"
+#include "lc_opts_enum.h"
 
 #ifdef WITH_ILP
 #include <lpp/lpp.h>
@@ -147,8 +146,10 @@ static void collect_egde_frequency(ir_node *block, void *data)
        arity = get_Block_n_cfgpreds(block);
 
        if (arity == 0) {
-               assert(block == get_irg_start_block(env->irg));
-               /* must be the start block, nothing to do here */
+               assert(block == get_irg_start_block(env->irg)
+                               || block == get_irg_end_block(env->irg));
+               /* must be the start block (or end-block for endless loops), nothing to
+                * do here */
                return;
        } else if (arity == 1) {
                edge.block            = block;
@@ -360,7 +361,7 @@ static blocksched_entry_t *finish_block_schedule(blocksched_env_t *env)
        ir_node            *startblock = get_irg_start_block(irg);
        blocksched_entry_t *entry      = get_irn_link(startblock);
 
-       set_using_visited(irg);
+       set_using_irn_visited(irg);
        inc_irg_visited(irg);
 
        env->worklist = new_pdeq();
@@ -368,7 +369,7 @@ static blocksched_entry_t *finish_block_schedule(blocksched_env_t *env)
        assert(pdeq_empty(env->worklist));
        del_pdeq(env->worklist);
 
-       clear_using_visited(irg);
+       clear_using_irn_visited(irg);
 
        return entry;
 }
@@ -712,7 +713,7 @@ static ir_node **create_extbb_block_schedule(ir_graph *irg, ir_exec_freq *execfr
        list.n_blks = 0;
 
        set_using_irn_link(irg);
-       set_using_visited(irg);
+       set_using_irn_visited(irg);
        inc_irg_block_visited(irg);
 
        create_block_list(get_irg_start_block(irg), &list);
@@ -726,7 +727,7 @@ static ir_node **create_extbb_block_schedule(ir_graph *irg, ir_exec_freq *execfr
        }
 
        clear_using_irn_link(irg);
-       clear_using_visited(irg);
+       clear_using_irn_visited(irg);
 
        return blk_list;
 }