#define SCHED_INITIAL_GRANULARITY (1 << 14)
-static void sched_renumber(const ir_node *block)
+static void sched_renumber(ir_node *const block)
{
sched_info_t *inf;
sched_timestep_t step = SCHED_INITIAL_GRANULARITY;
return sched_get_time_step(n1) < sched_get_time_step(n2);
}
-#define sched_foreach_from(from, irn) \
- for (ir_node *irn = from; !sched_is_end(irn); irn = sched_next(irn))
+#define sched_foreach_after(after, irn) \
+ for (ir_node *irn = (after); !sched_is_end(irn = sched_next(irn));)
#define sched_foreach_reverse_from(from, irn) \
for (ir_node *irn = from; !sched_is_begin(irn); irn = sched_prev(irn))
* @param irn A ir node pointer used as an iterator.
*/
#define sched_foreach(block,irn) \
- sched_foreach_from(sched_first(block), irn)
+ sched_foreach_after((assert(is_Block(block)), block), irn)
/**
* A shorthand macro for reversely iterating over a schedule.
* beginning of a loop. We try to reload as much values as possible now so they
* don't get reloaded inside the loop.
*/
-static void decide_start_workset(const ir_node *block)
+static void decide_start_workset(ir_node *const block)
{
ir_loop *loop = get_irn_loop(block);
ir_node *first;
/* search after the current position */
tries = 0;
- sched_foreach_from(sched_next(node), schedpoint) {
+ sched_foreach_after(node, schedpoint) {
if (has_delay_slot(schedpoint))
break;
if (tries++ >= PICK_DELAY_SLOT_MAX_DISTANCE)
cmp_block_execfreqs);
for (size_t i = 0; i < n_blocks; ++i) {
- const ir_node *block = sorted_blocks[i];
- sched_foreach(block, node) {
+ sched_foreach(sorted_blocks[i], node) {
if (!has_delay_slot(node))
continue;
ir_node *filler = pick_delay_slot_for(node);