/* already used?
TODO: It might be better to copy the value occupying the register
around here instead of trying the next one, find out when... */
if (assignments[r].value != NULL)
continue;
/* already used?
TODO: It might be better to copy the value occupying the register
around here instead of trying the next one, find out when... */
if (assignments[r].value != NULL)
continue;
reg = arch_register_for_index(cls, r);
DB((dbg, LEVEL_2, "Assign %+F -> %s\n", node, reg->name));
use_reg(node, reg);
reg = arch_register_for_index(cls, r);
DB((dbg, LEVEL_2, "Assign %+F -> %s\n", node, reg->name));
use_reg(node, reg);
/* add all combinations, then remove not allowed ones */
for (l = 0; l < n_regs; ++l) {
/* add all combinations, then remove not allowed ones */
for (l = 0; l < n_regs; ++l) {
hungarian_add(bp, l, l, 1);
continue;
}
for (r = 0; r < n_regs; ++r) {
hungarian_add(bp, l, l, 1);
continue;
}
for (r = 0; r < n_regs; ++r) {
continue;
/* livethrough values may not use constrainted output registers */
if (rbitset_is_set(live_through_regs, l)
continue;
/* livethrough values may not use constrainted output registers */
if (rbitset_is_set(live_through_regs, l)
stat_ev_ctx_push_str("regcls", cls->name);
n_regs = arch_register_class_n_regs(cls);
stat_ev_ctx_push_str("regcls", cls->name);
n_regs = arch_register_class_n_regs(cls);
- ignore_regs = bitset_malloc(n_regs);
- be_put_ignore_regs(birg, cls, ignore_regs);
+ normal_regs = rbitset_malloc(n_regs);
+ be_abi_set_non_ignore_regs(birg->abi, cls, normal_regs);
BE_TIMER_PUSH(t_ra_spill_apply);
be_abi_fix_stack_nodes(birg->abi);
BE_TIMER_POP(t_ra_spill_apply);
BE_TIMER_PUSH(t_ra_spill_apply);
be_abi_fix_stack_nodes(birg->abi);
BE_TIMER_POP(t_ra_spill_apply);