aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-sccvn.c
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2014-12-09 14:25:09 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2014-12-09 14:25:09 +0000
commit92a5094e04e9c9a50e596884eacabe53b36a53e9 (patch)
treeb2b878ed94eea9cd92e69a9449a9a13df6159253 /gcc/tree-ssa-sccvn.c
parentc3e1e6936a4bbeb7cd73640e046bb32d23997ac0 (diff)
downloadgcc-92a5094e04e9c9a50e596884eacabe53b36a53e9.zip
gcc-92a5094e04e9c9a50e596884eacabe53b36a53e9.tar.gz
gcc-92a5094e04e9c9a50e596884eacabe53b36a53e9.tar.bz2
re PR tree-optimization/64193 (Decreased performance after r173250)
2014-12-09 Richard Biener <rguenther@suse.de> PR tree-optimization/64193 * tree-ssa-alias.c (walk_non_aliased_vuses): Add valueize parameter and valueize the VUSE before looking up the def stmt. * tree-ssa-alias.h (walk_non_aliased_vuses): Adjust prototype. * tree-ssa-sccvn.c (vn_reference_lookup_pieces): Pass vn_valueize to walk_non_aliased_vuses. (vn_reference_lookup): Likewise. * tree-ssa-dom.c (lookup_avail_expr): Pass NULL as valueize callback to walk_non_aliased_vuses. * gcc.dg/tree-ssa/ssa-fre-43.c: New testcase. From-SVN: r218515
Diffstat (limited to 'gcc/tree-ssa-sccvn.c')
-rw-r--r--gcc/tree-ssa-sccvn.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/tree-ssa-sccvn.c b/gcc/tree-ssa-sccvn.c
index 7f69415..d7a4742 100644
--- a/gcc/tree-ssa-sccvn.c
+++ b/gcc/tree-ssa-sccvn.c
@@ -2160,7 +2160,8 @@ vn_reference_lookup_pieces (tree vuse, alias_set_type set, tree type,
*vnresult =
(vn_reference_t)walk_non_aliased_vuses (&r, vr1.vuse,
vn_reference_lookup_2,
- vn_reference_lookup_3, &vr1);
+ vn_reference_lookup_3,
+ vn_valueize, &vr1);
gcc_checking_assert (vr1.operands == shared_lookup_references);
}
@@ -2212,7 +2213,8 @@ vn_reference_lookup (tree op, tree vuse, vn_lookup_kind kind,
wvnresult =
(vn_reference_t)walk_non_aliased_vuses (&r, vr1.vuse,
vn_reference_lookup_2,
- vn_reference_lookup_3, &vr1);
+ vn_reference_lookup_3,
+ vn_valueize, &vr1);
gcc_checking_assert (vr1.operands == shared_lookup_references);
if (wvnresult)
{