From d176b500dcd39c8158ffd445e2aa5de09e06bac1 Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Wed, 29 Aug 2018 15:02:06 +0000 Subject: [PATCH] tree-ssa-sccvn.c (vuse_ssa_val): Return NULL for unvisited virtual operands that are not default defs to honor... 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. From-SVN: r263960 --- 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,3 +1,10 @@ +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 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.30.2