From patchwork Tue Jun 2 17:23:48 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Abhishek Kaushik X-Patchwork-Id: 136321 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 759994BA2E19 for ; Tue, 2 Jun 2026 17:26:02 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 759994BA2E19 Authentication-Results: sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=GOWlghCV; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=GOWlghCV X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from DU2PR03CU002.outbound.protection.outlook.com (mail-northeuropeazon11011054.outbound.protection.outlook.com [52.101.65.54]) by sourceware.org (Postfix) with ESMTPS id 8ED084BA2E04 for ; Tue, 2 Jun 2026 17:25:12 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 8ED084BA2E04 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 8ED084BA2E04 Authentication-Results: sourceware.org; arc=pass smtp.remote-ip=52.101.65.54 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1780421112; cv=pass; b=BEmVyDAOLRn3oy2Vr9S89jGhppPLoXEYIE0jFPH1rgxUxeAkFQOreC9TmZOM7lHwqhHGf7vZp/42D3bygUDgoMQWpq+X18+D8uhsK8kTjdLa55Lpym1mPd4APedgOQFnbOGEW65wihAcW3qJ7ekguIfu7zJGfHT3+1sswE9AJzE= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1780421112; c=relaxed/simple; bh=/dz3WdAv+1FhXdiHZ11xGIkSImo0nv16MhsVXBZyhDc=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=EOw6Oi626atWti69Ob2bLiLFRYSPHuwCRTOpO9jTWJoPfdI/1ShrZOPBL00QLazdPcZ/diCWzb/GPqTtk/DHlACDS0xvNLlDLdjBY9tAoFJb5UTYZJ9vx84BR1UbHpcFAC9xFqtOhii25Rg0vVeBAEiorsh2QkyFepc9fh9ie5w= ARC-Authentication-Results: i=3; sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=GOWlghCV; dkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com header.a=rsa-sha256 header.s=selector1 header.b=GOWlghCV DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 8ED084BA2E04 ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=fq82QfpHYuUffh/lPeUpB/wAEsv3ig+zAdzV2GqXjqwPrFT4I1aWUx6zGJsUDBzbEKpzejKhudX5MADgW5FioOuywJjBjbCh1j3kHbAIGQgvoD92WyfcCU5f/gramvrBAmgy+SBdiZQru1jAw51AJmxD//GqCJLUueExhx7Dxq4nJ7dRnk7Gmviv6uP33zURGRynaxnWNNyNm71QTeOyXsVWaCY1E3dWRg+DkMLsao2C1+2P7WWN6ygszwvnrzHdcR7I5gCWWVgGlE+xUA83ozA84zld02tr6D/4ynAohbUdG77khnsHq4nAy8F06d4g9H7CJyes2LAIwDlSsS8A4g== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=eQgDNbviwN/dIzqNbfvVQx9V0rMnDOvq/OfX7BGlGz8=; b=ace92m5UvslceHBhJAhQYWnCq6yagd4cnTbcLMODMIjZxD6CzLWaB18BqJgyRb3w2r6WAOPNM05QQfuCEGflhXoSZQZ1/P6z1pHq9fho/2nx/YkYttMFYWmIZoIhzwWxcCm23szmBIDW080cEgSus2jF9zJlM2ZVCudz0YOWfd07Rq11XsJl727yh5WHj785u3RaB2McIG3YZvEDS7ZJfKFNLKo+KvKpGLCwgwZspYDq8/R7qGtObjQtLJH/GnDoaD7lnSdkmLLqK39vD6LQtfSdPtSCXaI0d/98pmmyUSiCj9JFgdGotYNY+knKCwfIeol5ycmOxXbbvcrFCDTdcA== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 4.158.2.129) smtp.rcpttodomain=gmail.com smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=eQgDNbviwN/dIzqNbfvVQx9V0rMnDOvq/OfX7BGlGz8=; b=GOWlghCVz/hJ3H8kQNSrUAG16xBBnyuDluZWt1/uwcI/ReDsxu5Olp4lW/Qfg086kE0OjIztokpgWMIAqfNgnJiE6kiag3JWbpcb/1Omcwsk1K9qS4DfoeKLrxlfrdvovYkTDKtBr+vYDPfp2TPgjEPZbr4dD4gWf3H8N/4/eAM= Received: from PR1P264CA0055.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:2ca::11) by GV2PR08MB11537.eurprd08.prod.outlook.com (2603:10a6:150:2c9::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.71.17; Tue, 2 Jun 2026 17:25:08 +0000 Received: from AM4PEPF00025F99.EURPRD83.prod.outlook.com (2603:10a6:102:2ca:cafe::9a) by PR1P264CA0055.outlook.office365.com (2603:10a6:102:2ca::11) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.92.7 via Frontend Transport; Tue, 2 Jun 2026 17:25:06 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 4.158.2.129) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 4.158.2.129 as permitted sender) receiver=protection.outlook.com; client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C Received: from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by AM4PEPF00025F99.mail.protection.outlook.com (10.167.16.8) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.92.0 via Frontend Transport; Tue, 2 Jun 2026 17:25:06 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=st0Bn9FmDggJ+oBliijYTPeqCffXlJkUFpj/PFitYMiFL0FAPeCDgWp79NO/yvp1grchx2McGtFaTFC5F4aDQKfLkEevq8KdwearnfktYxIQ14AWi82Gh9Dd8vq/QVlhSqFsutW4H82gF3y9VlhEwfE8mlKUtk/r5mZs23Qn1fqpVRkxQ3YnK+901GO1CRKVDO0I9kP6C5/pxeShxPudUnRYHzhr8MbPsFUY2xYEkSAhpYqlevegRFAxaVZFiYawtJTBxVhN6Gx8Q0EF9qj7Ju2ZTqJud8UU7xf72bG/ooOYGGOAJWkVB5d8DcpEv+qfFZTGv5+d89aLm0SFzNAoPQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=eQgDNbviwN/dIzqNbfvVQx9V0rMnDOvq/OfX7BGlGz8=; b=uTduR3lxmWdhrVDBMdntvK7GjOjO3eA5EfU1oGOweF3LpzFvM6slw/7o7ZdatZuis95Ng6ikN8b7y9u+R5/gz+2LUPTfXzlDuVUOBipmuwxqrCzi3usrkKuJ4ANaSgqrszau50spEI8YtfZRQrVOQBdUz1cDHUSDBmhBRc6sp3pnboG8CRTpqiLzQ53ffM2ikWzcFidQp6t6b9MF1/MP6U+8AIqPhgfSnh0YzfLmXL7mhp8FNJ27bCviRwNBm7pYnhrOOGAgl/DER6SWkmCjoLneRHpSGglgCx/HKkE6xDHb8h5WHoVYXfm6vynkWpN7fOxTpq7eDHysjGcvIqbVYw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 172.205.89.229) smtp.rcpttodomain=gmail.com smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=eQgDNbviwN/dIzqNbfvVQx9V0rMnDOvq/OfX7BGlGz8=; b=GOWlghCVz/hJ3H8kQNSrUAG16xBBnyuDluZWt1/uwcI/ReDsxu5Olp4lW/Qfg086kE0OjIztokpgWMIAqfNgnJiE6kiag3JWbpcb/1Omcwsk1K9qS4DfoeKLrxlfrdvovYkTDKtBr+vYDPfp2TPgjEPZbr4dD4gWf3H8N/4/eAM= Received: from AS4P192CA0041.EURP192.PROD.OUTLOOK.COM (2603:10a6:20b:658::11) by PAVPR08MB8944.eurprd08.prod.outlook.com (2603:10a6:102:32f::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.71.12; Tue, 2 Jun 2026 17:24:02 +0000 Received: from AMS0EPF00000190.eurprd05.prod.outlook.com (2603:10a6:20b:658:cafe::31) by AS4P192CA0041.outlook.office365.com (2603:10a6:20b:658::11) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.92.7 via Frontend Transport; Tue, 2 Jun 2026 17:24:02 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 172.205.89.229) smtp.mailfrom=arm.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 172.205.89.229 as permitted sender) receiver=protection.outlook.com; client-ip=172.205.89.229; helo=nebula.arm.com; pr=C Received: from nebula.arm.com (172.205.89.229) by AMS0EPF00000190.mail.protection.outlook.com (10.167.16.213) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.5 via Frontend Transport; Tue, 2 Jun 2026 17:24:02 +0000 Received: from AZ-NEU-EX03.Arm.com (10.240.25.137) by AZ-NEU-EX03.Arm.com (10.240.25.137) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.29; Tue, 2 Jun 2026 17:23:56 +0000 Received: from ip-10-249-57-250.eu-west-1.compute.internal (10.249.57.250) by mail.arm.com (10.240.25.137) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.29 via Frontend Transport; Tue, 2 Jun 2026 17:23:55 +0000 From: Abhishek Kaushik To: CC: , , , , , Subject: [PATCH] tree-optimization: Query ranger for non-SSA niter bound expressions Date: Tue, 2 Jun 2026 17:23:48 +0000 Message-ID: <20260602172349.20432-1-abhishek.kaushik@arm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: References: MIME-Version: 1.0 X-EOPAttributedMessage: 1 X-MS-TrafficTypeDiagnostic: AMS0EPF00000190:EE_|PAVPR08MB8944:EE_|AM4PEPF00025F99:EE_|GV2PR08MB11537:EE_ X-MS-Office365-Filtering-Correlation-Id: a94b9adc-c53b-49c2-8072-08dec0cbe396 x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; ARA:13230040|1800799024|82310400026|36860700016|376014|6133799003|13003099007|22082099003|18002099003|56012099006|11063799006; X-Microsoft-Antispam-Message-Info-Original: y0CWBteKFi4fBp8FUrx+RBlPSJJrpkSCNVmFxhMOP4kbpccXzjNEJoW3AzRWdLlcKcnyUWet7HkvaB5Nu/eaPAC6p81sq3W1y01+fmBhPDYkGDMX2XixkW+A1HyAWzfIfx7Mr0rrbb0qp4cUuBissCpAVvb0Ww3bGm9fM3uzD0yDWTEC6ycKQoeJ/vFGPXk5Blt1NLrNITYH6ci7mbKnINEZMfPXUOKnbUivfF8YmHv+9GL49A22qJNujwDa8r6PZq1u5X3M7iNNT4rlceCkk9acxD5hLzOZTym+y4ffyhfY7YcWSsieuDKBt5TvFYUk4K3XzXB0bAjnfQ1gw/oJXOeIc/9XyTujGQDFpQn8lQW0y5a5QT2xbRLBbHifNheJhvy2xxNOyH+xQ+RoK2oXJEx9Y3vZT1jSJaiITk4D/HeEgpY4oJZv85NuyEoGMhvZl+OI6JHwT//NIYDGArPbob/YGg3hL4D9LfJInYWjcIL4LhAHd1cg5xOFoK48eTt2xQoN9mX7QA+EB8zyVTUNiR/lOmtJ1OuRABj+zTrEFFP+7VLACG6qLU1lhhKJ64Ba/1jJVHkRGfaRvw5jm5wQABFU61tMDMztIWqd3EdTNTJDsIimBlNC8nMl/thRaCYqEXVXfcWDLzU8QRqbMMChMTvcMF1hqEehFqpi24rwGRAmFWI3hU2IlbXXyxyYHeS6 X-Forefront-Antispam-Report-Untrusted: CIP:172.205.89.229; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:nebula.arm.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(1800799024)(82310400026)(36860700016)(376014)(6133799003)(13003099007)(22082099003)(18002099003)(56012099006)(11063799006); DIR:OUT; SFP:1101; X-Exchange-RoutingPolicyChecked: acdRsvZFjCEXInbUzmAbOI3AC2rUiVmBV5HmRC/75eBwhTON9AYMPspUXQhCK1295jrRYVlt9/YRImbEWCNq/GF46B5mQukqWOOgmldS8f58FXR+AxyFE/346ueojpiYLWOIpjv3+uWtyfYicGQhw79U+P77CT7kF7NIY8N+WjjkAY57NHrbT4AqYe040hoZBJC463f6MmOuaUssvmZpQ5CyfKXbTT8UwvK4W8AQachi3pY0Auz97g3m+2MFj4EwiL6jGWcMam6jb6vVOd4d1WfAD/2GDf1is2weLHu6uIMweiPZEyBQSXZ+Ry9E96V35rzFLgoAP0vLYQIKYePl3Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAVPR08MB8944 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM4PEPF00025F99.EURPRD83.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 6993c26e-8cb8-40b4-739b-08dec0cbbd56 X-Microsoft-Antispam: BCL:0; ARA:13230040|36860700016|82310400026|14060799003|35042699022|1800799024|376014|13003099007|18002099003|22082099003|11063799006|56012099006|6133799003; X-Microsoft-Antispam-Message-Info: W2atmv/qsRYRGXCXSlQJC9GhGfzfGH2gQ1MlddjCcpSTFMklBhjCuOoTjJvjUeBX+JwHq6AsgocOdQRf0CNoA4kmUT5+UgGn/FJRDWDngpgIZ45YigbQv183COs5FQdG02T7ZrRC3yoWbMDvUpWoqLnoiL1LLXBrbsjV8SE/x3Aj43UcNJ1ULLYiIeUPMXosvJvcqtnO/gk56VLG4jMCayMz29rQBAamBDXcxj9kCQl8x2Bpho3cB5w4hFfGh25HiBUjWVX7ModuLzruei0xTsmU3ZnHtEdCSGCedn8fwcmxruSduU3Ax8CsOonaI9P4D2YBOWLZjBqipzT28z/wPk/BMA4SU0zExxCQx7btvifw72UGX4tgWsjggovRH7V9/h/piKdvKUko6JTHRo3nLsjbqHAstJuJWxkd6WO08JFykLy9brIdiqaFoSIOOk8Pib50riM0lxb8D2gG5EXDlYr5lYtm9wToEGYy6pNnKz0FiWoXnbhvp9sM/7ETF1vXpjXFpOWNrXemlUeDovmft3wgn+rygctriVKIgCAHZC028ujNXS6Paen238SmVh9ycxkvkSH3JEIWEbD0wDBvH/xYYAAGSCTqOI6LYfMR8Ytet5Qae7zzo/zdvlbTKppQrOzJd/1wNND9mVjC2e4whdzGfX6I/0MLAt2a6LPfOUu2R/fLefZThGoUxKmFcyPQ X-Forefront-Antispam-Report: CIP:4.158.2.129; CTRY:GB; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:outbound-uk1.az.dlp.m.darktrace.com; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(36860700016)(82310400026)(14060799003)(35042699022)(1800799024)(376014)(13003099007)(18002099003)(22082099003)(11063799006)(56012099006)(6133799003); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: TMnaKlWTTBCw0VKynvHhC8vJJwrDpzGe93cDfiYz7T7SQLmssH/xIcY4fL7chO4DZ/Y3yh+xsbEebclztbdz15WjOabpUyDO0wnFXsc/BiOeYn0KlpvAEE/L2b+TYSagFGelVPOAJYHDPYWuhywygi1IqC+lWNDEzrwRkcDlD+YhIu2X9sGCBxuZOvfzrpdL2omRunXOYVz4nYoTBz9GSs0jXzcdnnYo5OgI0axl0910lK1PcjGx+jhbvLfpil0cwmPI/zMvIq+N1aPsZ9/2g913n188kqXk6RNrQ7qgod61pFhA8Vu6CIsqSiQg6wB6pSkMFWYMW2/hZ7mC5RN2MdhGqUg2gZI8W68vCe7rEH6kaf6WqL8k2YCeqN/ntSc8WrYplBAzKupaiX/OhwF/wYznVvU+PROF+53DiKlvxuqvS5pxrn5ikEqp9SusZ4l1 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Jun 2026 17:25:06.1442 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a94b9adc-c53b-49c2-8072-08dec0cbe396 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[4.158.2.129]; Helo=[outbound-uk1.az.dlp.m.darktrace.com] X-MS-Exchange-CrossTenant-AuthSource: AM4PEPF00025F99.EURPRD83.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV2PR08MB11537 X-Spam-Status: No, score=-11.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FORGED_SPF_HELO, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_NONE, TXREP shortcircuit=no autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on 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~patchwork=sourceware.org@gcc.gnu.org determine_value_range only queried ranger when VAR was an SSA_NAME. However, number_of_iterations_exit_assumptions calls expand_simple_operations on the IV bases before asking for the range. This can expose simple GENERIC expressions, including conversions, even when the original value had an SSA_NAME with useful range information. Ranger can analyze such expressions at a given program point, so query it for integral bound expressions using the loop header as context rather than restricting the query to SSA_NAMEs. This lets niter analysis recover the narrower range for value-preserving conversions such as uint8_t to int, while still handling non-value-preserving conversions and wrapping expressions conservatively. The new test covers a direct converted uint8_t bound, a masked uint16_t bound whose useful range comes from ranger, a guarded uint16_t bound whose range is context-sensitive, a non-value-preserving uint8_t to int8_t conversion, and a wrapping unsigned expression. Bootstrapped and regression tested on aarch64-unknown-linux-gnu. gcc/ChangeLog: * tree-ssa-loop-niter.cc (determine_value_range): Query ranger for integral expressions, not only SSA_NAMEs. Pass the loop header context to range queries. gcc/testsuite/ChangeLog: * gcc.target/aarch64/sve2/niter-convert-range.c: New test. --- .../aarch64/sve2/niter-convert-range.c | 68 +++++++++++++++++++ gcc/tree-ssa-loop-niter.cc | 10 +-- 2 files changed, 74 insertions(+), 4 deletions(-) create mode 100644 gcc/testsuite/gcc.target/aarch64/sve2/niter-convert-range.c diff --git a/gcc/testsuite/gcc.target/aarch64/sve2/niter-convert-range.c b/gcc/testsuite/gcc.target/aarch64/sve2/niter-convert-range.c new file mode 100644 index 00000000000..c96b2f3999c --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/sve2/niter-convert-range.c @@ -0,0 +1,68 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -march=armv8.3-a+sve2 -fdump-tree-vect-details" } */ + +#include + +int +foo (char *buf, uint8_t len) +{ + int x = 0; + + for (int16_t i = 0, y = 0; i < len; i++, y = i * 10) + x += (int) y * (buf[i] - '0'); + + return x; +} + +int +masked_len_foo (unsigned char *buf, uint16_t len) +{ + uint16_t n = len & 255; + int x = 0; + + for (int16_t i = 0, y = 0; i < n; i++, y = i * 10) + x += (int) y * (buf[i] - '0'); + + return x; +} + +int +guarded_len_foo (char *buf, uint16_t len) +{ + if (len > 255) + return 0; + + int x = 0; + + for (int16_t i = 0, y = 0; i < len; i++, y = i * 10) + x += (int) y * (buf[i] - '0'); + + return x; +} + +int +non_value_preserving (unsigned char *buf, uint8_t len) +{ + int x = 0; + + for (int16_t i = 0, y = 0; i < (int) (int8_t) len; i++, y = i * 10) + x += (int) y * (buf[i] - '0'); + + return x; +} + +unsigned +niter_convert_range_wrap (unsigned char *buf, uint8_t len) +{ + unsigned x = 0; + + for (unsigned i = 0, y = 0; i < (unsigned) len - 1; i++, y = i * 10) + x += y * (buf[i] - '0'); + + return x; +} + +/* { dg-final { scan-tree-dump-times {bounds on difference of bases: 0 [.][.][.] 126} 3 "vect" } } */ +/* { dg-final { scan-tree-dump-times {bounds on difference of bases: 0 [.][.][.] 254} 9 "vect" } } */ +/* { dg-final { scan-tree-dump-times {bounds on difference of bases: -1 [.][.][.] 4294967294} 3 "vect" } } */ +/* { dg-final { scan-tree-dump-times "loop vectorized using variable length vectors" 5 "vect" } } */ diff --git a/gcc/tree-ssa-loop-niter.cc b/gcc/tree-ssa-loop-niter.cc index f179be1ffc7..b3a0aebfba2 100644 --- a/gcc/tree-ssa-loop-niter.cc +++ b/gcc/tree-ssa-loop-niter.cc @@ -356,15 +356,16 @@ determine_value_range (class loop *loop, tree type, tree var, mpz_t off, get_type_static_bounds (type, min, max); /* See if we have some range info from VRP. */ - if (TREE_CODE (var) == SSA_NAME && INTEGRAL_TYPE_P (type)) + if (INTEGRAL_TYPE_P (type)) { edge e = loop_preheader_edge (loop); signop sgn = TYPE_SIGN (type); gphi_iterator gsi; + gimple *ctx = last_nondebug_stmt (loop->header); /* Either for VAR itself... */ int_range_max var_range (TREE_TYPE (var)); - get_range_query (cfun)->range_of_expr (var_range, var); + get_range_query (cfun)->range_of_expr (var_range, var, ctx); if (var_range.varying_p () || var_range.undefined_p ()) rtype = VR_VARYING; else @@ -383,7 +384,8 @@ determine_value_range (class loop *loop, tree type, tree var, mpz_t off, gphi *phi = gsi.phi (); if (PHI_ARG_DEF_FROM_EDGE (phi, e) == var && get_range_query (cfun)->range_of_expr (phi_range, - gimple_phi_result (phi)) + gimple_phi_result (phi), + ctx) && !phi_range.varying_p () && !phi_range.undefined_p ()) { @@ -404,7 +406,7 @@ determine_value_range (class loop *loop, tree type, tree var, mpz_t off, if (wi::gt_p (minv, maxv, sgn)) { int_range_max vr (TREE_TYPE (var)); - get_range_query (cfun)->range_of_expr (vr, var); + get_range_query (cfun)->range_of_expr (vr, var, ctx); if (vr.varying_p () || vr.undefined_p ()) rtype = VR_VARYING; else