diff options
author | vries <vries@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-07-06 11:07:32 +0000 |
---|---|---|
committer | vries <vries@138bc75d-0d04-0410-961f-82ee72b054a4> | 2012-07-06 11:07:32 +0000 |
commit | 39215e09c133bb44ca4dd21825881079b9adca2e (patch) | |
tree | 59363a6bdd234708373380456b551c1ba94f47c8 /gcc/tree-ssa-tail-merge.c | |
parent | 35821c01f393b078c071f66575be121c2b0bdd83 (diff) | |
download | gcc-39215e09c133bb44ca4dd21825881079b9adca2e.tar.gz |
2012-07-06 Tom de Vries <tom@codesourcery.com>
PR tree-optimization/52009
* tree-ssa-tail-merge.c (gimple_equal_p): For GIMPLE_ASSIGN, compare
value numbers of gimple_vdef.
* tree-ssa-sccvn.h (vn_reference_insert): Add vdef parameter to
prototype.
* tree-ssa-sccvn.c (copy_reference_ops_from_ref): Handle MODIFY_EXPR.
(vn_reference_insert): Add and handle vdef parameter.
(visit_reference_op_load): Add argument to vn_reference_insert call.
(visit_reference_op_store): Find value number of vdef of store. Insert
value number of vdef of store.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@189321 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-ssa-tail-merge.c')
-rw-r--r-- | gcc/tree-ssa-tail-merge.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/gcc/tree-ssa-tail-merge.c b/gcc/tree-ssa-tail-merge.c index da5878ad797..9ec3b8a5091 100644 --- a/gcc/tree-ssa-tail-merge.c +++ b/gcc/tree-ssa-tail-merge.c @@ -1119,6 +1119,14 @@ gimple_equal_p (same_succ same_succ, gimple s1, gimple s2) case GIMPLE_ASSIGN: lhs1 = gimple_get_lhs (s1); lhs2 = gimple_get_lhs (s2); + if (gimple_vdef (s1)) + { + if (vn_valueize (gimple_vdef (s1)) != vn_valueize (gimple_vdef (s2))) + return false; + if (TREE_CODE (lhs1) != SSA_NAME + && TREE_CODE (lhs2) != SSA_NAME) + return true; + } return (TREE_CODE (lhs1) == SSA_NAME && TREE_CODE (lhs2) == SSA_NAME && vn_valueize (lhs1) == vn_valueize (lhs2)); |