* Collect usage statistics.
*/
sched_foreach(bl, irn) {
- if (to_appear_in_schedule(irn)) {
- int i, n;
+ int i, n;
+ if (is_Proj(irn)
+ || (arch_irn_get_flags(irn) & arch_irn_flags_not_scheduled))
+ continue;
- for (i = 0, n = get_irn_arity(irn); i < n; ++i) {
- //ir_node *op = get_irn_n(irn, i);
- if (to_appear_in_schedule(irn)) {
- usage_stats_t *us = get_or_set_usage_stats(env, irn);
+ for (i = 0, n = get_irn_arity(irn); i < n; ++i) {
+ usage_stats_t *us = get_or_set_usage_stats(env, irn);
#if 0 /* Liveness is not computed here! */
- if (is_live_end(bl, op))
- us->uses_in_block = 99999;
- else
+ if (is_live_end(bl, op))
+ us->uses_in_block = 99999;
+ else
#endif
- us->uses_in_block++;
- }
- }
+ us->uses_in_block++;
}
}
for (i = 0, n = get_irn_arity(irn); i < n; ++i) {
ir_node *op = get_irn_n(irn, i);
- if (to_appear_in_schedule(op))
- sum += compute_max_hops(env, op);
+ if (is_Proj(op)
+ || (arch_irn_get_flags(op) & arch_irn_flags_not_scheduled))
+ continue;
+
+ sum += compute_max_hops(env, op);
}
sum += get_result_hops_sum(env, irn);
return sum;
}
-static ir_node *reg_pressure_select(void *block_env, ir_nodeset_t *ready_set,
- ir_nodeset_t *live_set)
+static ir_node *reg_pressure_select(void *block_env, ir_nodeset_t *ready_set)
{
ir_nodeset_iterator_t iter;
reg_pressure_selector_env_t *env = (reg_pressure_selector_env_t*)block_env;
ir_node *irn, *res = NULL;
int curr_cost = INT_MAX;
- (void) live_set;
assert(ir_nodeset_size(ready_set) > 0);
be_list_sched_graph(irg, ®_pressure_selector);
}
-BE_REGISTER_MODULE_CONSTRUCTOR(be_init_sched_regpress);
+BE_REGISTER_MODULE_CONSTRUCTOR(be_init_sched_regpress)
void be_init_sched_regpress(void)
{
be_register_scheduler("regpress", sched_reg_pressure);