From 91860f4fcf8ef515ce604290c06131a7c9875498 Mon Sep 17 00:00:00 2001 From: rguenth Date: Wed, 29 Aug 2018 15:02:06 +0000 Subject: [PATCH] 2018-08-29 Richard Biener * tree-ssa-sccvn.c (vuse_ssa_val): Return NULL for unvisited virtual operands that are not default defs to honor region boundaries. (rpo_vn_valueize): Remove ineffective code here. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263960 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 7 +++++++ gcc/tree-ssa-sccvn.c | 19 +++++++++---------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 91a06ed7a16..dcec935d5be 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,12 @@ 2018-08-29 Richard Biener + * tree-ssa-sccvn.c (vuse_ssa_val): Return NULL for unvisited + virtual operands that are not default defs to honor region + boundaries. + (rpo_vn_valueize): Remove ineffective code here. + +2018-08-29 Richard Biener + PR tree-optimization/87132 * tree-ssa-alias.c (get_continuation_for_phi): Do not translate when skipping defs reachable over backedges. diff --git a/gcc/tree-ssa-sccvn.c b/gcc/tree-ssa-sccvn.c index e3b9f1c7dbc..39ab4b25285 100644 --- a/gcc/tree-ssa-sccvn.c +++ b/gcc/tree-ssa-sccvn.c @@ -474,12 +474,16 @@ vuse_ssa_val (tree x) do { - tree tem = SSA_VAL (x); - /* stmt walking can walk over a backedge and reach code we didn't - value-number yet. */ - if (tem == VN_TOP) + if (SSA_NAME_IS_DEFAULT_DEF (x)) return x; - x = tem; + vn_ssa_aux_t tem + = vn_ssa_aux_hash->find_with_hash (x, SSA_NAME_VERSION (x)); + /* For region-based VN this makes walk_non_aliased_vuses stop walking + when we are about to look at a def outside of the region. */ + if (!tem || !tem->visited) + return NULL_TREE; + gcc_assert (tem->valnum != VN_TOP); + x = tem->valnum; } while (SSA_NAME_IN_FREE_LIST (x)); @@ -5751,11 +5755,6 @@ rpo_vn_valueize (tree name) if (TREE_CODE (name) == SSA_NAME) { vn_ssa_aux_t val = VN_INFO (name); - /* For region-based VN this makes walk_non_aliased_vuses stop walking - when we are about to look at a def outside of the region. */ - if (SSA_NAME_IS_VIRTUAL_OPERAND (name) - && !val->visited) - return NULL_TREE; if (val) { tree tem = val->valnum; -- 2.11.4.GIT