- place memperms in the predblocks of the memphi, not in the blocks of the phi argument
[libfirm] / ir / be / besched.c
index d9bcb8c..82cc3e7 100644 (file)
@@ -63,7 +63,7 @@ void sched_renumber(const ir_node *block)
 {
        ir_node *irn;
        sched_info_t *inf;
-       sched_timestep_t step = 0;
+       sched_timestep_t step = SCHED_INITIAL_GRANULARITY;
 
        sched_foreach(block, irn) {
                inf = get_irn_sched_info(irn);
@@ -276,24 +276,22 @@ static void mark_dead_nodes_walker(ir_node *node, void *data)
 static void remove_dead_nodes_walker(ir_node *block, void *data)
 {
        remove_dead_nodes_env_t *env = (remove_dead_nodes_env_t*) data;
-       ir_node *node;
+       ir_node *node, *next;
 
-       for(node = sched_first(block); !sched_is_end(node); ) {
-               // get next node now, as after calling sched_remove it will be invalid
-               ir_node* next = sched_next(node);
+       for(node = sched_first(block); !sched_is_end(node); node = next) {
                int i, arity;
 
-               if(bitset_is_set(env->reachable, get_irn_idx(node))) {
-                       node = next;
+               // get next node now, as after calling sched_remove it will be invalid
+               next = sched_next(node);
+
+               if(bitset_is_set(env->reachable, get_irn_idx(node)))
                        continue;
-               }
 
-               sched_remove(node);
                arity = get_irn_arity(node);
                for(i = 0; i < arity; ++i)
                        set_irn_n(node, i, new_r_Bad(env->irg));
 
-               node = next;
+               sched_remove(node);
        }
 }