From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1666) id EC2EB383D817; Wed, 16 Jun 2021 14:24:29 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org EC2EB383D817 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 r10-9924] tree-optimization/100934 - properly mark irreducible regions for DOM X-Act-Checkin: gcc X-Git-Author: Richard Biener X-Git-Refname: refs/heads/releases/gcc-10 X-Git-Oldrev: be85daaecc3ae2da8707e22dc1ef19c21c3e503f X-Git-Newrev: b7878d4e179c72ad69cdd103fbbfe16bc38010db Message-Id: <20210616142429.EC2EB383D817@sourceware.org> Date: Wed, 16 Jun 2021 14:24:29 +0000 (GMT) X-BeenThere: gcc-cvs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Jun 2021 14:24:30 -0000 https://gcc.gnu.org/g:b7878d4e179c72ad69cdd103fbbfe16bc38010db commit r10-9924-gb7878d4e179c72ad69cdd103fbbfe16bc38010db Author: Richard Biener Date: Mon Jun 14 14:57:26 2021 +0200 tree-optimization/100934 - properly mark irreducible regions for DOM The jump threading code requires marked irreducible regions for the purpose of validating jump threading paths but DOM fails to provide that resulting in mised number of iteration upper bounds clearing. 2021-06-14 Richard Biener PR tree-optimization/100934 * tree-ssa-dom.c (pass_dominator::execute): Properly mark irreducible regions. * gcc.dg/torture/pr100934.c: New testcase. (cherry picked from commit 788bb7edb3975b80c4cb16323e7a5e55a2471e46) Diff: --- gcc/testsuite/gcc.dg/torture/pr100934.c | 21 +++++++++++++++++++++ gcc/tree-ssa-dom.c | 3 ++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/gcc/testsuite/gcc.dg/torture/pr100934.c b/gcc/testsuite/gcc.dg/torture/pr100934.c new file mode 100644 index 00000000000..43b78849895 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr100934.c @@ -0,0 +1,21 @@ +/* { dg-do run } */ + +int a, b, c, d, e; +int main() +{ + int f = 0, g = 0; + for (; f < 2; f++) + { + int h, i; + for (h = 0; h < 2; h++) + { + b = e = g ? a % g : 0; + c = d; + for (i = 0; i < 1; i++) + g = 0; + for (; g < 2; g++) + ; + } + } + return 0; +} diff --git a/gcc/tree-ssa-dom.c b/gcc/tree-ssa-dom.c index 864c984f636..c0d77b5f46c 100644 --- a/gcc/tree-ssa-dom.c +++ b/gcc/tree-ssa-dom.c @@ -695,7 +695,8 @@ pass_dominator::execute (function *fun) gcc.dg/tree-ssa/pr21417.c can't be threaded if loop preheader is missing. We should improve jump threading in future then LOOPS_HAVE_PREHEADERS won't be needed here. */ - loop_optimizer_init (LOOPS_HAVE_PREHEADERS | LOOPS_HAVE_SIMPLE_LATCHES); + loop_optimizer_init (LOOPS_HAVE_PREHEADERS | LOOPS_HAVE_SIMPLE_LATCHES + | LOOPS_HAVE_MARKED_IRREDUCIBLE_REGIONS); /* Initialize the value-handle array. */ threadedge_initialize_values ();