From: Matthias Braun Date: Tue, 18 Sep 2007 11:38:25 +0000 (+0000) Subject: rehash fixed loop nodes in betranshelp X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=10ed9b6da2f6355d4aacbadc554265376cf6cf06;p=libfirm rehash fixed loop nodes in betranshelp [r15858] --- diff --git a/ir/be/betranshlp.c b/ir/be/betranshlp.c index 42c466685..3ba3cdcb4 100644 --- a/ir/be/betranshlp.c +++ b/ir/be/betranshlp.c @@ -165,6 +165,7 @@ void be_enqueue_preds(ir_node *node) { */ static void fix_loops(ir_node *node) { int i, arity; + int changed; assert(node_is_in_irgs_storage(env.irg, node)); @@ -173,6 +174,7 @@ static void fix_loops(ir_node *node) { mark_irn_visited(node); + changed = 0; if (! is_Block(node)) { ir_node *block = get_nodes_block(node); ir_node *new_block = get_irn_link(block); @@ -180,6 +182,7 @@ static void fix_loops(ir_node *node) { if (new_block != NULL) { set_nodes_block(node, new_block); block = new_block; + changed = 1; } fix_loops(block); @@ -193,6 +196,7 @@ static void fix_loops(ir_node *node) { if (nw != NULL && nw != in) { set_irn_n(node, i, nw); in = nw; + changed = 1; } fix_loops(in); @@ -200,6 +204,7 @@ static void fix_loops(ir_node *node) { /* fix proj block */ if(is_Proj(node)) { set_nodes_block(node, get_nodes_block(get_Proj_pred(node))); + changed = 1; } arity = get_irn_deps(node); @@ -210,10 +215,15 @@ static void fix_loops(ir_node *node) { if (nw != NULL && nw != in) { set_irn_dep(node, i, nw); in = nw; + changed = 1; } fix_loops(in); } + + if(changed) { + identify_remember(current_ir_graph->value_table, node); + } } ir_node *be_pre_transform_node(ir_node *place) {