From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1075) id 577703858421; Fri, 5 Nov 2021 22:18:27 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 577703858421 MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Jan Hubicka To: gcc-cvs@gcc.gnu.org Subject: [gcc r12-4965] Avoid left shift of negative value in ipa-modref-tree.h X-Act-Checkin: gcc X-Git-Author: Jan Hubicka X-Git-Refname: refs/heads/master X-Git-Oldrev: 432ed97b992ccfe93616d5af1fa5c1a7d7aff9ff X-Git-Newrev: 9cc8ca8da90426f625481195a2127a5e86689bcd Message-Id: <20211105221827.577703858421@sourceware.org> Date: Fri, 5 Nov 2021 22:18:27 +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: Fri, 05 Nov 2021 22:18:27 -0000 https://gcc.gnu.org/g:9cc8ca8da90426f625481195a2127a5e86689bcd commit r12-4965-g9cc8ca8da90426f625481195a2127a5e86689bcd Author: Jan Hubicka Date: Fri Nov 5 23:17:50 2021 +0100 Avoid left shift of negative value in ipa-modref-tree.h gcc/ChangeLog: PR ipa/103082 * ipa-modref-tree.h (struct modref_access_node): Avoid left shift of negative value Diff: --- gcc/ipa-modref-tree.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/gcc/ipa-modref-tree.h b/gcc/ipa-modref-tree.h index 9976e489697..bc428d193d2 100644 --- a/gcc/ipa-modref-tree.h +++ b/gcc/ipa-modref-tree.h @@ -116,8 +116,13 @@ struct GTY(()) modref_access_node if (!known_le (parm_offset, a.parm_offset) && !range_info_useful_p ()) return false; + /* We allow negative aoffset_adj here in case + there is an useful range. This is because adding + a.offset may result in non-ngative offset again. + Ubsan fails on val << LOG_BITS_PER_UNIT where val + is negative. */ aoffset_adj = (a.parm_offset - parm_offset) - << LOG2_BITS_PER_UNIT; + * BITS_PER_UNIT; } } if (range_info_useful_p ())