From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1666) id 07E913858C50; Wed, 23 Mar 2022 14:08:07 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 07E913858C50 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 r11-9688] tree-optimization/104931 - mitigate niter analysis issue X-Act-Checkin: gcc X-Git-Author: Richard Biener X-Git-Refname: refs/heads/releases/gcc-11 X-Git-Oldrev: ea4f664a40f853851177e0cc4e47fedeaad8f70a X-Git-Newrev: d1f4dfd409dedf4d00ca7be001cf757d0d6e82f4 Message-Id: <20220323140807.07E913858C50@sourceware.org> Date: Wed, 23 Mar 2022 14:08:07 +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, 23 Mar 2022 14:08:07 -0000 https://gcc.gnu.org/g:d1f4dfd409dedf4d00ca7be001cf757d0d6e82f4 commit r11-9688-gd1f4dfd409dedf4d00ca7be001cf757d0d6e82f4 Author: Richard Biener Date: Wed Mar 16 14:53:06 2022 +0100 tree-optimization/104931 - mitigate niter analysis issue The following backports a pointer associating pattern from trunk that mitigates an issue with number_of_iterations_lt_to_ne in which context we fail to fold a comparison but succeed in folding a related subtraction. In the failure mode this results in a loop wrongly assumed looping with a bogus number of iterations, resulting in crashing of the premake application on start. With the backported simplification we are able to fold the comparison and correctly compute the loop as not iterating. I have failed to create a standalone testcase. I belive part of the issue is still latent but I have failed to nail down the issue exactly. Still I believe the backporting of the mitigation patch is the most sensible and safe thing at this point. 2022-03-16 Richard Biener PR tree-optimization/104931 * match.pd ((ptr) (x p+ y) p+ z -> (ptr) (x p+ (y + z))): New GENERIC simplification. Diff: --- gcc/match.pd | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/gcc/match.pd b/gcc/match.pd index 05a08d0f96a..a005dcd42bd 100644 --- a/gcc/match.pd +++ b/gcc/match.pd @@ -1997,6 +1997,11 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT) (simplify (pointer_plus (pointer_plus:s @0 @1) @3) (pointer_plus @0 (plus @1 @3))) +#if GENERIC +(simplify + (pointer_plus (convert:s (pointer_plus:s @0 @1)) @3) + (convert:type (pointer_plus @0 (plus @1 @3)))) +#endif /* Pattern match tem1 = (long) ptr1;