From b583a2940af90d03f535648fef111cb158933f7d Mon Sep 17 00:00:00 2001 From: Richard Biener Date: Wed, 4 Oct 2023 15:25:33 +0200 Subject: [PATCH] Avoid left around copies when value-numbering BBs The following makes sure to treat values whose definition we didn't visit as available since those by definition must dominate the entry of the region. That avoids unpropagated copies after if-conversion and resulting SLP discovery fails (which doesn't handle plain copies). * tree-ssa-sccvn.cc (rpo_elim::eliminate_avail): Not visited value numbers are available itself. --- gcc/tree-ssa-sccvn.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/gcc/tree-ssa-sccvn.cc b/gcc/tree-ssa-sccvn.cc index e46498568cb..d2aab38c2d2 100644 --- a/gcc/tree-ssa-sccvn.cc +++ b/gcc/tree-ssa-sccvn.cc @@ -7688,7 +7688,11 @@ rpo_elim::eliminate_avail (basic_block bb, tree op) { if (SSA_NAME_IS_DEFAULT_DEF (valnum)) return valnum; - vn_avail *av = VN_INFO (valnum)->avail; + vn_ssa_aux_t valnum_info = VN_INFO (valnum); + /* See above. */ + if (!valnum_info->visited) + return valnum; + vn_avail *av = valnum_info->avail; if (!av) return NULL_TREE; if (av->location == bb->index) -- 2.11.4.GIT