X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fopt%2Fgvn_pre.c;h=6f539ba8ffc55341fc3e4ef8f76a2f79bc5b89a5;hb=0cc8bfc863da28d3799e9eca1d1765d564b6e573;hp=5e35e27863e9755bc5093f7f7c34c178714eba92;hpb=e07b61c6ed5d198a484761f8a40a4f26520d964d;p=libfirm diff --git a/ir/opt/gvn_pre.c b/ir/opt/gvn_pre.c index 5e35e2786..6f539ba8f 100644 --- a/ir/opt/gvn_pre.c +++ b/ir/opt/gvn_pre.c @@ -829,7 +829,8 @@ void do_gvn_pre(ir_graph *irg) /* * Switch on GCSE. We need it to correctly compute - * the leader of a node by hashing. + * the value of a node, which is independent from + * its block. */ save_optimization_state(&state); set_opt_global_cse(1); @@ -837,7 +838,7 @@ void do_gvn_pre(ir_graph *irg) DB((dbg, LEVEL_1, "Doing GVN-PRE for %+F\n", irg)); /* allocate block info for all blocks */ - irg_walk_blkwise_graph(irg, NULL, topo_walker, &a_env); + irg_walk_blkwise_dom_top_down(irg, NULL, topo_walker, &a_env); /* clean the exp_gen set. Doing this here saves the cleanup in the iteration. */ for (bl_info = a_env.list; bl_info != NULL; bl_info = bl_info->next) { @@ -899,6 +900,5 @@ void do_gvn_pre(ir_graph *irg) if (a_env.pairs) { set_irg_outs_inconsistent(irg); set_irg_loopinfo_inconsistent(irg); - } } /* do_gvn_pre */