From 20f0561bfff92336aafb7e504400f7d8b03dae0b Mon Sep 17 00:00:00 2001 From: Matthias Braun Date: Thu, 10 Sep 2009 11:35:56 +0000 Subject: [PATCH] we need last_uses even without preferences [r26517] --- ir/be/benewalloc.c | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/ir/be/benewalloc.c b/ir/be/benewalloc.c index c19b1ef33..453beb7b0 100644 --- a/ir/be/benewalloc.c +++ b/ir/be/benewalloc.c @@ -364,7 +364,8 @@ static void analyze_block(ir_node *block, void *data) if (is_Phi(node)) break; - check_defs(&live_nodes, weight, node); + if (create_preferences) + check_defs(&live_nodes, weight, node); /* mark last uses */ arity = get_irn_arity(node); @@ -391,22 +392,24 @@ static void analyze_block(ir_node *block, void *data) be_liveness_transfer(cls, node, &live_nodes); - /* update weights based on usage constraints */ - for (i = 0; i < arity; ++i) { - const arch_register_req_t *req; - const unsigned *limited; - ir_node *op = get_irn_n(node, i); + if (create_preferences) { + /* update weights based on usage constraints */ + for (i = 0; i < arity; ++i) { + const arch_register_req_t *req; + const unsigned *limited; + ir_node *op = get_irn_n(node, i); - if (!arch_irn_consider_in_reg_alloc(cls, op)) - continue; + if (!arch_irn_consider_in_reg_alloc(cls, op)) + continue; - req = arch_get_register_req(node, i); - if (!(req->type & arch_register_req_type_limited)) - continue; + req = arch_get_register_req(node, i); + if (!(req->type & arch_register_req_type_limited)) + continue; - limited = req->limited; - give_penalties_for_limits(&live_nodes, weight * USE_FACTOR, limited, - op); + limited = req->limited; + give_penalties_for_limits(&live_nodes, weight * USE_FACTOR, limited, + op); + } } } @@ -1915,8 +1918,7 @@ static void be_straight_alloc_cls(void) be_clear_links(irg); - if (create_preferences) - irg_block_walk_graph(irg, NULL, analyze_block, NULL); + irg_block_walk_graph(irg, NULL, analyze_block, NULL); if (create_congruence_classes) combine_congruence_classes(); -- 2.20.1