use optimize_graph_df
[libfirm] / ir / be / belower.c
index b0eaa47..b8e9cdd 100644 (file)
@@ -309,6 +309,7 @@ static void lower_perm_node(ir_node *irn, void *walk_env) {
                        should be ok.
        */
        sched_point = sched_prev(irn);
+       DBG((mod, LEVEL_1, "perm: %+F\n", irn));
        DBG((mod, LEVEL_1, "sched point is %+F\n", sched_point));
        assert(sched_point && "Perm is not scheduled or has no predecessor");
 
@@ -349,8 +350,10 @@ static void lower_perm_node(ir_node *irn, void *walk_env) {
                                set_Proj_proj(pairs[i].out_node, get_Proj_proj(pairs[i].in_node));
                        }
 
+#ifdef SCHEDULE_PROJS
                        /* remove the proj from the schedule */
                        sched_remove(pairs[i].out_node);
+#endif
 
                        /* reroute the edges from the proj to the argument */
                        exchange(pairs[i].out_node, pairs[i].in_node);
@@ -464,19 +467,24 @@ static void lower_perm_node(ir_node *irn, void *walk_env) {
                                        pairs[pidx].in_node = res1;
                                }
                                else {
+#ifdef SCHEDULE_PROJS
                                        sched_remove(res1);
+#endif
                                }
 
+#ifdef SCHEDULE_PROJS
                                sched_remove(res2);
+#endif
 
                                set_Proj_pred(res2, cpyxchg);
                                set_Proj_proj(res2, 0);
                                set_Proj_pred(res1, cpyxchg);
                                set_Proj_proj(res1, 1);
 
+#ifdef SCHEDULE_PROJS
                                sched_add_after(sched_point, res1);
                                sched_add_after(sched_point, res2);
-
+#endif
                                arch_set_irn_register(arch_env, res2, cycle->elems[i + 1]);
                                arch_set_irn_register(arch_env, res1, cycle->elems[i]);
 
@@ -496,9 +504,10 @@ static void lower_perm_node(ir_node *irn, void *walk_env) {
                                arch_set_irn_register(arch_env, cpyxchg, cycle->elems[i + 1]);
                                n_ops++;
 
+#ifdef SCHEDULE_PROJS
                                /* remove the proj from the schedule */
                                sched_remove(res2);
-
+#endif
                                /* exchange copy node and proj */
                                exchange(res2, cpyxchg);
 
@@ -997,8 +1006,10 @@ found_front:
                        /* reroute all users of the proj to the moved node. */
                        edges_reroute(proj, move, irg);
 
+#ifdef SCHEDULE_PROJS
                        /* remove the proj from the schedule. */
                        sched_remove(proj);
+#endif
 
                        /* and like it to bad so it is no more in the use array of the perm */
                        set_Proj_pred(proj, get_irg_bad(irg));