From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1666) id 6E7C9385840A; Thu, 1 Feb 2024 10:13:03 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 6E7C9385840A DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1706782383; bh=Nuwy4j2mQDD9JexSf5n2+bWtg1YTo8faAsII2sHPr74=; h=From:To:Subject:Date:From; b=udXSQBAD2Yy4jxXCcDCQIbT8D5HnOE31CweCO/2wk3YlNTVJpApqIQYUZ1dP/kVCz FpScyZvuUoGQnHyCm4cS9tTojDbBDKDsyD6KAlqv2QyKSHvDhi0meD+OJgarnugc7u nnw527UnZBH2cjc0ZaBOln26iN1WPlVBodQ4nr6Q= MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Richard Biener To: gcc-cvs@gcc.gnu.org Subject: [gcc r14-8683] tree-optimization/113693 - LC SSA and region VN X-Act-Checkin: gcc X-Git-Author: Richard Biener X-Git-Refname: refs/heads/master X-Git-Oldrev: d85c17a2b628b7e783716ac376bdb60ddc2afb9a X-Git-Newrev: b84f8a5e0a7ef3e5bd0d186fc7e280d9c43c5b7f Message-Id: <20240201101303.6E7C9385840A@sourceware.org> Date: Thu, 1 Feb 2024 10:13:03 +0000 (GMT) List-Id: https://gcc.gnu.org/g:b84f8a5e0a7ef3e5bd0d186fc7e280d9c43c5b7f commit r14-8683-gb84f8a5e0a7ef3e5bd0d186fc7e280d9c43c5b7f Author: Richard Biener Date: Thu Feb 1 09:18:47 2024 +0100 tree-optimization/113693 - LC SSA and region VN The following fixes LC SSA preserving with region VN which was broken when availability checking was enhanced to treat not visited value numbers as available. The following makes sure to honor availability data we put in place for LC SSA preserving instead. PR tree-optimization/113693 * tree-ssa-sccvn.cc (rpo_elim::eliminate_avail): Honor avail data when available. * gcc.dg/pr113693.c: New testcase. Diff: --- gcc/testsuite/gcc.dg/pr113693.c | 13 +++++++++++++ gcc/tree-ssa-sccvn.cc | 11 +++++++---- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/gcc/testsuite/gcc.dg/pr113693.c b/gcc/testsuite/gcc.dg/pr113693.c new file mode 100644 index 000000000000..a6f55199d0ff --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr113693.c @@ -0,0 +1,13 @@ +/* { dg-do compile { target bitint } } */ +/* { dg-options "-O2 -fdbg-cnt=vect_loop:1" } */ + +_BitInt(837) g, h; + +void +fn1(void) +{ + for (; g; g++) + for (; h; h++) + ; +} +/* { dg-message "dbgcnt" "" { target *-*-* } 0 } */ diff --git a/gcc/tree-ssa-sccvn.cc b/gcc/tree-ssa-sccvn.cc index 9bed9b3cc69c..bbcf86588f9f 100644 --- a/gcc/tree-ssa-sccvn.cc +++ b/gcc/tree-ssa-sccvn.cc @@ -7723,12 +7723,15 @@ rpo_elim::eliminate_avail (basic_block bb, tree op) if (SSA_NAME_IS_DEFAULT_DEF (valnum)) return valnum; 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; + { + /* See above. But when there's availability info prefer + what we recorded there for example to preserve LC SSA. */ + if (!valnum_info->visited) + return valnum; + return NULL_TREE; + } if (av->location == bb->index) /* On tramp3d 90% of the cases are here. */ return ssa_name (av->leader);