From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1611) id D98BD3858C27; Mon, 25 Oct 2021 13:27:11 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org D98BD3858C27 MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Martin Jambor To: gcc-cvs@gcc.gnu.org Subject: [gcc r12-4662] sra: Fix the fix for PR 102505 (PR 102886) X-Act-Checkin: gcc X-Git-Author: Martin Jambor X-Git-Refname: refs/heads/master X-Git-Oldrev: 7518e4c2f0758daac5d650d400565cf49ac3c8c5 X-Git-Newrev: f217e87972a2a207e793101fc05cfc9dd095c678 Message-Id: <20211025132711.D98BD3858C27@sourceware.org> Date: Mon, 25 Oct 2021 13:27:11 +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: Mon, 25 Oct 2021 13:27:12 -0000 https://gcc.gnu.org/g:f217e87972a2a207e793101fc05cfc9dd095c678 commit r12-4662-gf217e87972a2a207e793101fc05cfc9dd095c678 Author: Martin Jambor Date: Mon Oct 25 15:22:06 2021 +0200 sra: Fix the fix for PR 102505 (PR 102886) I was not careful with the fix for PR 102505 and did not craft the check to satisfy the verifier carefully, which lead to PR 102886. (The verifier has the test structured differently and somewhat redundantly, so I could not just copy it). This patch fixes it. I hope it is quite obvious correction of an oversight and so will commit it if survives bootstrap and testing on x86_64-linux and ppc64le-linux. Testcase for this bug is gcc.dg/tree-ssa/sra-18.c (but only on platforms with constant pools). I will backport the two fixes to the release branches squashed. gcc/ChangeLog: 2021-10-22 Martin Jambor PR tree-optimization/102886 * tree-sra.c (totally_scalarize_subtree): Fix the out of access-condition. Diff: --- gcc/tree-sra.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gcc/tree-sra.c b/gcc/tree-sra.c index f561e1a2133..76e3aae405c 100644 --- a/gcc/tree-sra.c +++ b/gcc/tree-sra.c @@ -3288,7 +3288,7 @@ totally_scalarize_subtree (struct access *root) continue; HOST_WIDE_INT pos = root->offset + int_bit_position (fld); - if (pos + fsize > root->size) + if (pos + fsize > root->offset + root->size) return false; enum total_sra_field_state state = total_should_skip_creating_access (root,