bescripts: Copy all common node attributes into the constructor variants.
[libfirm] / ir / be / belive.c
index e6db6e6..acf32c2 100644 (file)
@@ -363,7 +363,6 @@ static void collect_liveness_nodes(ir_node *irn, void *data)
 
 void be_liveness_compute_sets(be_lv_t *lv)
 {
-       ir_node **nodes;
        int       i;
        int       n;
 
@@ -375,8 +374,7 @@ void be_liveness_compute_sets(be_lv_t *lv)
        obstack_init(&lv->obst);
 
        n = get_irg_last_idx(lv->irg);
-       nodes = NEW_ARR_F(ir_node *, n);
-       memset(nodes, 0, sizeof(nodes[0]) * n);
+       ir_node **const nodes = NEW_ARR_FZ(ir_node*, n);
 
        /* inserting the variables sorted by their ID is probably
         * more efficient since the binary sorted set insertion
@@ -482,21 +480,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);
-       }
+       );
 }