From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1011) id 146E33853567; Fri, 11 Nov 2022 19:48:30 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 146E33853567 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1668196110; bh=TBMM2yN5SpobaFJGX/fSNNsN2bBFMOx7odqrxP1E/ic=; h=From:To:Subject:Date:From; b=pUcWa+HY6sgEDsG0LzoD5VqylBlh5FVbMycbedu50XjGkblJOH3L9OZ/KgHzH3MY5 pb+a7jf3EeQUdU2w2YK+YvnvCxu7alGq/+LPSJwADLSlNE6M0tZe2CYnMLfxEWrVoO RaUkAAoSN6gq/awhFScFtzCCX5GK2TzSnNMn3KC4= MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Andrew Macleod To: gcc-cvs@gcc.gnu.org Subject: [gcc r13-3911] Don't add dependencies in update_stmt. X-Act-Checkin: gcc X-Git-Author: Andrew MacLeod X-Git-Refname: refs/heads/master X-Git-Oldrev: 52672be7d328df50f9a05ce3ab44ebcae50fee1b X-Git-Newrev: 0a7b437ca71e2721e9bcf070762fc54ef7991aeb Message-Id: <20221111194830.146E33853567@sourceware.org> Date: Fri, 11 Nov 2022 19:48:30 +0000 (GMT) List-Id: https://gcc.gnu.org/g:0a7b437ca71e2721e9bcf070762fc54ef7991aeb commit r13-3911-g0a7b437ca71e2721e9bcf070762fc54ef7991aeb Author: Andrew MacLeod Date: Fri Nov 11 12:22:33 2022 -0500 Don't add dependencies in update_stmt. gimple_ranger::update_stmt has no idea what the context of an update is, and should not be adding relations when it re-evaluates a stmt. PR tree-optimization/107523 gcc/ * gimple-range.cc (gimple_ranger::update_stmt): Use fur_stmt rather than fur_depend. gcc/testsuite/ * gcc.dg/pr107523.c: New. Diff: --- gcc/gimple-range.cc | 2 +- gcc/testsuite/gcc.dg/pr107523.c | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/gcc/gimple-range.cc b/gcc/gimple-range.cc index 2885d0fa21e..ecd6039e0fd 100644 --- a/gcc/gimple-range.cc +++ b/gcc/gimple-range.cc @@ -546,7 +546,7 @@ gimple_ranger::update_stmt (gimple *s) // Re-calculate a new value using just cache values. Value_Range tmp (TREE_TYPE (lhs)); fold_using_range f; - fur_depend src (s, &(gori ()), &m_cache); + fur_stmt src (s, &m_cache); f.fold_stmt (tmp, s, src, lhs); // Combine the new value with the old value to check for a change. diff --git a/gcc/testsuite/gcc.dg/pr107523.c b/gcc/testsuite/gcc.dg/pr107523.c new file mode 100644 index 00000000000..1e5ed46c636 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr107523.c @@ -0,0 +1,32 @@ +/* { dg-do run } */ +/* { dg-options "-O2 " } */ + +int a, b = 1; +unsigned int c = 1; +int main() { + int d = 1, f; + if (b) + d = 0; + a = -1; + b = ~d ^ 465984011; + L1:; + if (b < 2) + f = b; + b = f; + if (f <= a) { + int g = -(a && 1), h = g - f && a, i = ~(c / f) && 1 % (a | h); + if (c) { + g = f; + if (i || (g && (g > -465984012))) + goto L2; + } + c = g | f / c; + } + if (0) + L2: + a = 0; + if (a <= c) + goto L1; + return 0; +} +