X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fopt%2Fgvn_pre.c;h=798aa36e57ee4e1638e5a4274e798c4b32533ec4;hb=4cef2a70fbdc26498af3540fb1d07d96fbd56d56;hp=5e35e27863e9755bc5093f7f7c34c178714eba92;hpb=e07b61c6ed5d198a484761f8a40a4f26520d964d;p=libfirm diff --git a/ir/opt/gvn_pre.c b/ir/opt/gvn_pre.c index 5e35e2786..798aa36e5 100644 --- a/ir/opt/gvn_pre.c +++ b/ir/opt/gvn_pre.c @@ -25,9 +25,7 @@ * @version $Id$ * @summary */ -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif +#include "config.h" #include "irflag.h" #include "irdom.h" @@ -829,7 +827,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 +836,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 +898,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 */