From patchwork Fri Nov 24 07:01:27 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Biener X-Patchwork-Id: 169220 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:ce62:0:b0:403:3b70:6f57 with SMTP id o2csp955747vqx; Thu, 23 Nov 2023 23:01:56 -0800 (PST) X-Google-Smtp-Source: AGHT+IEDF7F8d4jmhsVYVuvYPHhF4PRgEOvwO1n58tKgZsQDRqXuxCm1/Zt0dYQlieM9j3IdWvbT X-Received: by 2002:a05:6214:419b:b0:66d:1100:7b81 with SMTP id ld27-20020a056214419b00b0066d11007b81mr2659114qvb.18.1700809316367; Thu, 23 Nov 2023 23:01:56 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1700809316; cv=pass; d=google.com; s=arc-20160816; b=F3g8lQCGKMkCCsqYH4xX9ZRIIVrvx+6WWaRnwGJIynsLpwZ+2/THiWrRnHjwx+Hh+H m5qJeBZm3qCqCFxI5g/2oLq+9m/CI9mZQ+vLO3vhgqJ2gurtTWCB8mmkOdBiAoWvf7Sz vNCjQd4CBVES1mCfgGffn5jFGXV+jzEbsXMpP3pmB8zNqBIYAh8aCA86ZG8eEO6+OpIc dmYpNzEERfC2TYdcZPx+nTi6P+kBZy6+yLA6KrFV+KcMvaDlWK83p83pLfKZA7EBUsKo LZBqUdQmJNZ8bPHOmV6rDmzgoSfmW7HyZpmvGoPMN0sLN1/vMEXFuQWpsol85d+kn5sS bmMA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:message-id:mime-version:subject :to:from:date:arc-filter:dmarc-filter:delivered-to; bh=a7BijLlH8mZ4MRjv8n42JGQdGvgqCLq6M+5i+E4ES+0=; fh=hPrbWPhweUx4V0GV9uXJqbyAzg2ABmTz7kczrAQqMmM=; b=OWK7n1XkoZIqAsszOaCrB4wuipzNQqr92OgTF/GSIDRUsBTzARgx1eGwNqOevM66bC sBBwAGVSynyMrWaVaTWIRrFtA8JvQLIpGjx6loB8tvwUWx/Ln1t+la56dGVUYlxEScNg 70GM/Jeu5lT0JMAr5mIjP1rvEjnq0fgGCjVmNw99IyYKu9ePDdB+Op6ZC1Uc/AFrfgQr AJW3nlY1Ebm7aPDNN2n8rHrPY6vheHGIqSOguS1zObBaa27sWPYwo5HpQqixBlObbsEu 6i43KmyKv6MRdDYVtgsi0bN3DilbuAO+XmsyF/euoiPN9O5Mwhaw41akaq09awCv5Pf+ BGeg== ARC-Authentication-Results: i=2; mx.google.com; arc=pass (i=1); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=suse.de Received: from server2.sourceware.org (server2.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id iy3-20020a0562140f6300b0067a1956df0dsi509938qvb.517.2023.11.23.23.01.56 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Nov 2023 23:01:56 -0800 (PST) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) client-ip=8.43.85.97; Authentication-Results: mx.google.com; arc=pass (i=1); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=suse.de Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 286BC3858C60 for ; Fri, 24 Nov 2023 07:01:56 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from smtp-out1.suse.de (smtp-out1.suse.de [IPv6:2a07:de40:b251:101:10:150:64:1]) by sourceware.org (Postfix) with ESMTPS id 5979F3858D20 for ; Fri, 24 Nov 2023 07:01:31 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 5979F3858D20 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.de ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 5979F3858D20 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a07:de40:b251:101:10:150:64:1 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1700809292; cv=none; b=cs3wtiHLdzeSIMCoFsVWSsSLGmpsWjeWt/MY3q8cttkuU1sm0eJ7fmdIgWNTWTe/HymKWkqi0HIzLkcF6Glnz9brG0RJUeJdSY1hp7ilHIWJbMUCyY179ofyjmRMuskl0OgTrGEnO715bvo5lpjWT2H4t3YB6YWpusXglRC15lM= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1700809292; c=relaxed/simple; bh=c12duBMrvr2edi8VhN8TXaUSni7/+vZ7F30TXR4WWFc=; h=Date:From:To:Subject:MIME-Version:Message-Id; b=Af3eagyDKVp3wnxzSruMIdrjHNXgAvGz36HY51rcXt09h8dItJe61oX8KEVzwGLRvZ0z+BRJZ/j8BMQfAdymdhwWYyfB258nCGP5qRPZAVpIRtqIdkDO/zJkABvQlIgGDftSNELSkfehxpCz7oCGbsMH8U8ztW0IqkA6ewzFXgA= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from imap2.dmz-prg2.suse.org (imap2.dmz-prg2.suse.org [IPv6:2a07:de40:b281:104:10:150:64:98]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 2AABE21B42 for ; Fri, 24 Nov 2023 07:01:28 +0000 (UTC) Received: from imap2.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap2.dmz-prg2.suse.org (Postfix) with ESMTPS id 0F706132E2 for ; Fri, 24 Nov 2023 07:01:28 +0000 (UTC) Received: from dovecot-director2.suse.de ([10.150.64.162]) by imap2.dmz-prg2.suse.org with ESMTPSA id sSDeAUhKYGVzMQAAn2gu4w (envelope-from ) for ; Fri, 24 Nov 2023 07:01:28 +0000 Date: Fri, 24 Nov 2023 08:01:27 +0100 (CET) From: Richard Biener To: gcc-patches@gcc.gnu.org Subject: [PATCH] tree-optimization/112344 - relax final value-replacement fix MIME-Version: 1.0 Message-Id: <20231124070128.0F706132E2@imap2.dmz-prg2.suse.org> X-Spamd-Bar: ++++++++++ Authentication-Results: smtp-out1.suse.de; dkim=none; dmarc=fail reason="No valid SPF, No valid DKIM" header.from=suse.de (policy=none); spf=softfail (smtp-out1.suse.de: 2a07:de40:b281:104:10:150:64:98 is neither permitted nor denied by domain of rguenther@suse.de) smtp.mailfrom=rguenther@suse.de X-Rspamd-Server: rspamd2 X-Spamd-Result: default: False [10.29 / 50.00]; ARC_NA(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; SPAMHAUS_XBL(0.00)[2a07:de40:b281:104:10:150:64:98:from]; FROM_HAS_DN(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; NEURAL_SPAM_SHORT(3.00)[1.000]; MIME_GOOD(-0.10)[text/plain]; PREVIOUSLY_DELIVERED(0.00)[gcc-patches@gcc.gnu.org]; TO_DN_NONE(0.00)[]; R_SPF_SOFTFAIL(4.60)[~all:c]; RCPT_COUNT_ONE(0.00)[1]; RCVD_COUNT_THREE(0.00)[3]; MX_GOOD(-0.01)[]; NEURAL_SPAM_LONG(3.50)[1.000]; DBL_BLOCKED_OPENRESOLVER(0.00)[tree-chrec.cc:url]; FUZZY_BLOCKED(0.00)[rspamd.com]; FROM_EQ_ENVFROM(0.00)[]; R_DKIM_NA(2.20)[]; MIME_TRACE(0.00)[0:+]; RCVD_TLS_ALL(0.00)[]; BAYES_HAM(-3.00)[99.99%]; DMARC_POLICY_SOFTFAIL(0.10)[suse.de : No valid SPF, No valid DKIM,none] X-Spam-Score: 10.29 X-Rspamd-Queue-Id: 2AABE21B42 X-Spam-Status: No, score=-11.9 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1783427829467962030 X-GMAIL-MSGID: 1783427829467962030 The following tries to reduce the number of cases we use an unsigned type for the addition when we know the original signed increment was OK which is when the total unsigned increment computed fits the signed type as well. This fixes the observed testsuite fallout. Bootstrapped and tested on x86_64-unknown-linux-gnu, pushed. PR tree-optimization/112344 * tree-chrec.cc (chrec_apply): Only use an unsigned add when the overall increment doesn't fit the signed type. --- gcc/tree-chrec.cc | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/gcc/tree-chrec.cc b/gcc/tree-chrec.cc index f4ba130ba20..e2864e8d131 100644 --- a/gcc/tree-chrec.cc +++ b/gcc/tree-chrec.cc @@ -646,9 +646,21 @@ chrec_apply (unsigned var, res = chrec_fold_multiply (utype, chrec_convert (utype, chrecr, NULL), res); - res = chrec_fold_plus (utype, - chrec_convert (utype, chrecl, NULL), res); - res = chrec_convert (type, res, NULL); + /* When the resulting increment fits the original type + do the increment in it. */ + if (TREE_CODE (res) == INTEGER_CST + && int_fits_type_p (res, TREE_TYPE (chrecr))) + { + res = chrec_convert (TREE_TYPE (chrecr), res, NULL); + res = chrec_fold_plus (type, chrecl, res); + } + else + { + res = chrec_fold_plus (utype, + chrec_convert (utype, chrecl, NULL), + res); + res = chrec_convert (type, res, NULL); + } } } else if (TREE_CODE (x) == INTEGER_CST