bearch: Add and use be_foreach_value().
[libfirm] / ir / be / belive.c
index ddabe0e..a3d268f 100644 (file)
@@ -482,21 +482,13 @@ void be_liveness_transfer(const arch_register_class_t *cls,
         * 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);
-       }
+       );
 }
 
 
@@ -506,10 +498,7 @@ void be_liveness_end_of_block(const be_lv_t *lv,
                               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);
        }
 }