From: Richard Biener Date: Wed, 4 Oct 2023 13:25:33 +0000 (+0200) Subject: Avoid left around copies when value-numbering BBs X-Git-Tag: basepoints/gcc-15~5734 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b583a2940af90d03f535648fef111cb158933f7d;p=thirdparty%2Fgcc.git 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. --- diff --git a/gcc/tree-ssa-sccvn.cc b/gcc/tree-ssa-sccvn.cc index e46498568cbe..d2aab38c2d20 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)