* function. */
assert(!is_Phi(node) && "liveness_transfer produces invalid results for phi nodes");
- be_foreach_definition(node, cls, value,
+ be_foreach_definition(node, cls, value, req,
ir_nodeset_remove(nodeset, value);
);
- int arity = get_irn_arity(node);
- for (int i = 0; i < arity; ++i) {
- const arch_register_req_t *in_req = arch_get_irn_register_req_in(node, i);
- if (in_req->cls != cls)
- continue;
- ir_node *op = get_irn_n(node, i);
- const arch_register_req_t *op_req = arch_get_irn_register_req(op);
- if (arch_register_req_is(op_req, ignore))
- continue;
+ be_foreach_use(node, cls, in_req, op, op_req,
ir_nodeset_insert(nodeset, op);
- }
+ );
}
const ir_node *block, ir_nodeset_t *live)
{
assert(lv->sets_valid && "live sets must be computed");
- be_lv_foreach(lv, block, be_lv_state_end, node) {
- if (!arch_irn_consider_in_reg_alloc(cls, node))
- continue;
-
+ be_lv_foreach_cls(lv, block, be_lv_state_end, cls, node) {
ir_nodeset_insert(live, node);
}
}