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");
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);
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]);
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);
/* 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));