X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fbe%2Fbelive.c;h=acf32c238e02ef56b7dd2bcf0730b1cca5b7b1ab;hb=df2faee01a5832057bb3ca0ba5f67e979c916e19;hp=e6db6e63673841a3445c416c969597ceb7ffb38b;hpb=b731214f8067006ee8c5ed026cd85f6d04592345;p=libfirm diff --git a/ir/be/belive.c b/ir/be/belive.c index e6db6e636..acf32c238 100644 --- a/ir/be/belive.c +++ b/ir/be/belive.c @@ -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); - } + ); }