From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1643) id DCC67385E012; Fri, 21 Oct 2022 09:29:04 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org DCC67385E012 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1666344544; bh=Ka0EKqOR9zwGpWNHi6OlSrrjMMlhuzhQLelT7oqo5es=; h=From:To:Subject:Date:From; b=LlepysZsH6MKZnkTzfVifSdhMH9oDTdTMMQNfBFt1equtY7gVd1mJFT/YU42uAvmU 4eSnk/9DGzvt6OYJzuU1q5Sw30opG2k28zU3W8bnSEz2lYEljTkdR4KJgR48Pb9xlo HB8ChsFW7QnlYVkki2zx1dr0J/4zrynJszpLk9ZY= MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Thomas Schwinge To: gcc-cvs@gcc.gnu.org Subject: [gcc r13-3433] Add 'gcc.dg/tree-ssa/pr107195-3.c' [PR107195] X-Act-Checkin: gcc X-Git-Author: Thomas Schwinge X-Git-Refname: refs/heads/master X-Git-Oldrev: 09f9814dc02c161ed78604c6df70b19b596f7524 X-Git-Newrev: 436c4a210e8ff936063579dab3641632c06c8a7d Message-Id: <20221021092904.DCC67385E012@sourceware.org> Date: Fri, 21 Oct 2022 09:29:04 +0000 (GMT) List-Id: https://gcc.gnu.org/g:436c4a210e8ff936063579dab3641632c06c8a7d commit r13-3433-g436c4a210e8ff936063579dab3641632c06c8a7d Author: Thomas Schwinge Date: Mon Oct 17 09:10:03 2022 +0200 Add 'gcc.dg/tree-ssa/pr107195-3.c' [PR107195] ... to display optimization performed as of recent commit r13-3217-gc4d15dddf6b9eacb36f535807ad2ee364af46e04 "[PR107195] Set range to zero when nonzero mask is 0". PR tree-optimization/107195 gcc/testsuite/ * gcc.dg/tree-ssa/pr107195-3.c: New. Diff: --- gcc/testsuite/gcc.dg/tree-ssa/pr107195-3.c | 112 +++++++++++++++++++++++++++++ 1 file changed, 112 insertions(+) diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr107195-3.c b/gcc/testsuite/gcc.dg/tree-ssa/pr107195-3.c new file mode 100644 index 00000000000..eba4218b3c9 --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr107195-3.c @@ -0,0 +1,112 @@ +/* Inspired by 'libgomp.oacc-c-c++-common/nvptx-sese-1.c'. */ + +/* { dg-additional-options -O1 } */ +/* { dg-additional-options -fdump-tree-dom3-raw } */ + + +extern int +__attribute__((const)) +foo1 (int); + +int f1 (int r) +{ + if (foo1 (r)) /* If this first 'if' holds... */ + r *= 2; /* ..., 'r' now has a zero-value lower-most bit... */ + + if (r & 1) /* ..., so this second 'if' can never hold... */ + { /* ..., so this is unreachable. */ + /* In constrast, if the first 'if' does not hold ('foo1 (r) == 0'), the + second 'if' may hold, but we know ('foo1' being 'const') that + 'foo1 (r) == 0', so don't have to re-evaluate it here: */ + r += foo1 (r); + } + + return r; +} +/* Thus, if optimizing, we only ever expect one call of 'foo1'. + { dg-final { scan-tree-dump-times {gimple_call > 1) & 2) + r += foo4 (r); + + return r; +} +/* { dg-final { scan-tree-dump-times {gimple_call