diff options
author | Richard Biener <rguenther@suse.de> | 2014-12-09 14:25:09 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2014-12-09 14:25:09 +0000 |
commit | 92a5094e04e9c9a50e596884eacabe53b36a53e9 (patch) | |
tree | b2b878ed94eea9cd92e69a9449a9a13df6159253 /gcc/tree-ssa-sccvn.c | |
parent | c3e1e6936a4bbeb7cd73640e046bb32d23997ac0 (diff) | |
download | gcc-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.c | 6 |
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) { |