if (get_irn_irg(irn)->be_data == NULL)
return;
- if (sched_is_scheduled(irn) && sched_has_prev(irn) && !is_Block(irn)) {
- ir_node *prev = sched_prev(irn);
- fprintf(F, "edge:{sourcename: ");
- print_nodeid(F, irn);
- fprintf(F, " targetname: ");
- print_nodeid(F, prev);
- fprintf(F, " color:magenta}\n");
+ if (sched_is_scheduled(irn) && !is_Block(irn)) {
+ ir_node *const prev = sched_prev(irn);
+ if (!sched_is_begin(prev)) {
+ fprintf(F, "edge:{sourcename: ");
+ print_nodeid(F, irn);
+ fprintf(F, " targetname: ");
+ print_nodeid(F, prev);
+ fprintf(F, " color:magenta}\n");
+ }
}
}
return is_Block(node);
}
-/**
- * Check, if an ir_node has a scheduling successor.
- * @param irn The ir node.
- * @return 1, if the node has a scheduling successor, 0 if not.
- */
-static inline bool sched_has_next(const ir_node *irn)
-{
- const sched_info_t *info = get_irn_sched_info(irn);
- const ir_node *block = is_Block(irn) ? irn : get_nodes_block(irn);
- return info->next != block;
-}
-
-/**
- * Check, if an ir_node has a scheduling predecessor.
- * @param irn The ir node.
- * @return 1, if the node has a scheduling predecessor, 0 if not.
- */
-static inline bool sched_has_prev(const ir_node *irn)
-{
- const sched_info_t *info = get_irn_sched_info(irn);
- const ir_node *block = is_Block(irn) ? irn : get_nodes_block(irn);
- return info->prev != block;
-}
-
/**
* Get the scheduling successor of a node.
* @param irn The node.
* (and therefore after code selection).
*/
int n_tries = 10; /* limit our search */
- ir_node *schedpoint = node;
- while (sched_has_prev(schedpoint)) {
+ for (ir_node *schedpoint = node;;) {
const arch_register_t *reg;
schedpoint = sched_prev(schedpoint);
+ if (sched_is_begin(schedpoint))
+ break;
if (--n_tries == 0)
break;
/* see that there is no code between Return and restore, if there is move
* it in front of the restore */
while (true) {
- if (!sched_has_prev(schedpoint))
- return;
schedpoint = sched_prev(schedpoint);
+ if (sched_is_begin(schedpoint))
+ return;
if (is_sparc_Restore(schedpoint) || is_sparc_RestoreZero(schedpoint))
break;
}