Message ID | ZaKv0rFkGjlDO14D@arm.com |
---|---|
State | Unresolved |
Headers |
Return-Path: <gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:693c:2614:b0:101:6a76:bbe3 with SMTP id mm20csp820538dyc; Sat, 13 Jan 2024 07:45:17 -0800 (PST) X-Google-Smtp-Source: AGHT+IE2Mh+quzEbtXJt2alNlqG2nM35ZcYU49xz37hEBrIS7QknZHaPdhH7oDc14dTPr+SmXGlP X-Received: by 2002:a05:620a:1369:b0:783:3a23:ea3f with SMTP id d9-20020a05620a136900b007833a23ea3fmr3455218qkl.77.1705160717501; Sat, 13 Jan 2024 07:45:17 -0800 (PST) ARC-Seal: i=4; a=rsa-sha256; t=1705160717; cv=pass; d=google.com; s=arc-20160816; b=q2MEgoD4os+rvLF5wNjS6MYJIz5o8bEO7TlIhe6jswRPPqVY+6F8AHY3IXo/1qEsiL ffR8DjwGUQbjF85Yx0h2yo1vxH4khIuxPVKHBGcBeW5fLHeXZZRZH11ut0MHpqyPh4e/ 3hOuFA6CfDMNl6ak0479RXYdpSZb7Xp3E8qylTvitEyU8iv82BXylhoa+YkY0IE9Rsae 9a3JpsN36R8xq9qWV+slT9B22pilBHgqvTPs5sdH8DiPOK6IriNZtpg0lhJ39/4xMLn3 psABVNxz69xLxllZ59S/QnNtHJpu7jJPgDBtk0nPt+VRzNpEIqWmr3nJ7ETmp0DcIEGJ pWEw== ARC-Message-Signature: i=4; 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:original-authentication-results :nodisclaimer:mime-version:content-transfer-encoding :content-disposition:message-id:subject:cc:to:from:date :authentication-results-original:dkim-signature:dkim-signature :arc-filter:dmarc-filter:delivered-to; bh=/QxFs7AYJS/LbVMrjskh4R3XVQsQmf37RrknxGMvFao=; fh=rK/GR6E5CDeX4v661qR4Md+UnKo7nXSDh7f7HZAPX1U=; b=J/qoAyzcCtV7pRWkEoxiNyEgS6dxb7MkwQqFRFjWa0EeVQdUdCNfVmHwo1B0x2+L7U 2ZSKrblfdqn5zxMcKZR0fQZ4AixWIKNbeo4+cmDEAoJKuRCHIV/f4Gd9xnScftzxKMzn MhD6EtysJCDRNNtG2K4PtakqOTqirgZQVuEA/VfYDk+wSidMwC1PX6WwCX1mSvJASuLD bATRG5EW7IZZhdHsxPWn9v2DfeXPz+SI6M7AwAI/hyb9W4AvcFwxRugxTCaXFeg1bo5g eL5s9zLFREDg0d0jKhJ5h2F9/tZ5M7IxcMos9MrHB/wFhmMfHApRU+/AbPrSt4HxjfyK MI8A== ARC-Authentication-Results: i=4; mx.google.com; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=z+AeGtHu; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=z+AeGtHu; arc=pass (i=3); 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=arm.com Received: from server2.sourceware.org (server2.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id ea17-20020a05620a489100b00783527bebd6si1062532qkb.252.2024.01.13.07.45.17 for <ouuuleilei@gmail.com> (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 13 Jan 2024 07:45:17 -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; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=z+AeGtHu; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=z+AeGtHu; arc=pass (i=3); 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=arm.com Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 382903858C98 for <ouuuleilei@gmail.com>; Sat, 13 Jan 2024 15:45:17 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2056.outbound.protection.outlook.com [40.107.20.56]) by sourceware.org (Postfix) with ESMTPS id 528D53858C29 for <gcc-patches@gcc.gnu.org>; Sat, 13 Jan 2024 15:44:33 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 528D53858C29 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 528D53858C29 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=40.107.20.56 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1705160675; cv=pass; b=kTTi19PBdCovFqUmNbs2umv1VaPHlON0ovEub/MO0FJZegXYlrHaQzEWyUZmzZGS37/Z2XIUsYSchhctjU3J/Ccj1apR32BphJidizsjPDFErejumuvC4/ex7Rjs9lmsiwlQtfX+pXyIlcrDXhsUpGe0WuurZ9elCppjm85EUaY= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1705160675; c=relaxed/simple; bh=D5qi9ELvFGc7S2lKhjjnwkAQSakny6L6NeZ9jF/edws=; h=DKIM-Signature:DKIM-Signature:Date:From:To:Subject:Message-ID: MIME-Version; b=S4CA7UzTnKTBH1mG+UpiUzWWbtT1CmxroAIPF6IV4sWyLjuougxPSZ/n1z7gRNLnadvF7x5WDun9ZfR5iSyluI6RC+cg8r3TjjpGIUl6ixju4782QOZjYJwZtFY1J2MpZ2vvNxf/mRl38OysLulZ1myhq9BsudADMy2OIqALjfk= ARC-Authentication-Results: i=3; server2.sourceware.org ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=Zeft4DwkLR/glW1YAllvFiNMZ5YwEvlsXASxgRDaOVSg75/7+dJ1vn2eFPiIq9PeL7OqpghaHKDvdZbAwPEhmQR8bu3AQIR+mZr26kbBY+bMJfXEMeaNKiq0pL17/bCduWTYpCZVJRFkTj7sKB4OPBzyMw1SrB6Yo53tlrN1L7rHx8201Fmiuiv7og8HNljbq5SgIzAQAd8X5dOjiC6resX5MD/nwmid3QENkRNVmg/iVA5fpfn3uLEJO/yqR0rcwN2CJFziDzM8FPiZ8QVrqTqSZRdtpyq9ul9bHZ3IF0jFGOuaJa1GAjVWZEQeKr4K8gOki7D37qd1iGuNumJWzg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=/QxFs7AYJS/LbVMrjskh4R3XVQsQmf37RrknxGMvFao=; b=CvmdJNaADwUCwxYkuimQjbBxyV9Gy+IFIoz6cKQj3hvPWRbsth/Yb1EQoQWf7qsXARKVCxLIHExCZ8X1Rp/ecya3+MwIbqWW/OuU2nrc7psrG4UD358ycTk4RxFzX27vcKB9rXCmAbrfCd0YNmtgYk5HKunwwDOX7BfTn7t0Oee7B+La47anwSlUybzRffBHiwI5BlTEJRgFI0licL5sQffwDqBvAb4tGuTqjn/I1RQmTC9bl9eQrFANcftQWoKrGq2AQrAgoIpiEfegfOzQvAzzWeM0Sf6OSUMiO5Vd4KOMzlx49LxGZdbFVrvdywdejq0dtKbpFbzu/y0yM0rhKw== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 63.35.35.123) smtp.rcpttodomain=gcc.gnu.org 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=armh.onmicrosoft.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/QxFs7AYJS/LbVMrjskh4R3XVQsQmf37RrknxGMvFao=; b=z+AeGtHureCmfsSxH3HncGZqLi/2uBANQMQ7vJOGVd8r6wGKPXfyP2Pnj735cswbdGy+ERExApSXTgRDKYwW+cBrqOD58eR+zkZHMMFpe6+ozT1/e8zRznv4MW7IGeIstRF76chqtLNtDBnWgz6WejX0EwCJ+T0vJz2XNNWEeJ8= Received: from AS9P194CA0011.EURP194.PROD.OUTLOOK.COM (2603:10a6:20b:46d::16) by PR3PR08MB5708.eurprd08.prod.outlook.com (2603:10a6:102:84::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.23; Sat, 13 Jan 2024 15:44:29 +0000 Received: from AM3PEPF0000A791.eurprd04.prod.outlook.com (2603:10a6:20b:46d:cafe::d4) by AS9P194CA0011.outlook.office365.com (2603:10a6:20b:46d::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.23 via Frontend Transport; Sat, 13 Jan 2024 15:44:29 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by AM3PEPF0000A791.mail.protection.outlook.com (10.167.16.120) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.14 via Frontend Transport; Sat, 13 Jan 2024 15:44:29 +0000 Received: ("Tessian outbound 1076c872ecc6:v228"); Sat, 13 Jan 2024 15:44:29 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 8daea96fdb55cd46 X-CR-MTA-TID: 64aa7808 Received: from 4edc99f96549.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 7DA4F0D3-1F66-4400-B41E-95C468305C17.1; Sat, 13 Jan 2024 15:44:23 +0000 Received: from EUR04-DB3-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 4edc99f96549.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Sat, 13 Jan 2024 15:44:23 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VrrnedJ4BeNxKUZ0aybJJodgy9zqLuYk/C0nUroPad7tQ0tlk+nvzOmHkAGE/dJshNL5qKJLimCBzL8SzLqiSMsxG23L8g3BMyrtcyjKyBvc0m/acFOXTr0FYOGpainSoGHOQ0PiE0N/JmPu49QF8a6KZF6vs8wsSZeYrLOty2cah6Pi+d0s0opCqMkhKHohe92C5GE8yikfEmVvgpa2welnZPKv9CETOd6iY9EeCNI9nRDvyKYMFik2ytVCi8nYPboJw4rgVeSguHnEd6eDpTW588w0Z2auejvEt0MNRC6HY51nrfO3zPE0+CmOMsAqf8h+3jHtY3gt49b3rJkATA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; 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=/QxFs7AYJS/LbVMrjskh4R3XVQsQmf37RrknxGMvFao=; b=kzQLf62k3rLUa6xJXRWkFg1J4B2yo6twdI1NLPGKbGPpfhDjrLFkrZHA0WFd/bE+abXWd9aFKFpJxks4VxwrTbmfhMr6zmw/ECo6Bsgg6gadyBApmtoUPXnVtLqZCfQZDqniL5DtShXJZeZTtKPrlRZONVhvsCGrnC5RWYv/4tF/JtHaBoOhVEjahtYoWXwmB5aMkWcttdbksaPgomC0Ob2qMXrbF0TlAsZJP0W9eMTXrTUnw3StZncDpK6XGL4dAiW7poYEUI+0xJJgJUTXSePqZobGfP+Ki90GFqetFfI3vktu8RyCqCJCgV3udTNfGD5NgxIxA0/T8LcJ+rEWhA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/QxFs7AYJS/LbVMrjskh4R3XVQsQmf37RrknxGMvFao=; b=z+AeGtHureCmfsSxH3HncGZqLi/2uBANQMQ7vJOGVd8r6wGKPXfyP2Pnj735cswbdGy+ERExApSXTgRDKYwW+cBrqOD58eR+zkZHMMFpe6+ozT1/e8zRznv4MW7IGeIstRF76chqtLNtDBnWgz6WejX0EwCJ+T0vJz2XNNWEeJ8= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from PAWPR08MB8958.eurprd08.prod.outlook.com (2603:10a6:102:33e::15) by DB9PR08MB8484.eurprd08.prod.outlook.com (2603:10a6:10:3d4::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7181.23; Sat, 13 Jan 2024 15:44:21 +0000 Received: from PAWPR08MB8958.eurprd08.prod.outlook.com ([fe80::48ca:fbcb:84bf:ed17]) by PAWPR08MB8958.eurprd08.prod.outlook.com ([fe80::48ca:fbcb:84bf:ed17%4]) with mapi id 15.20.7181.015; Sat, 13 Jan 2024 15:44:21 +0000 Date: Sat, 13 Jan 2024 15:44:18 +0000 From: Alex Coplan <alex.coplan@arm.com> To: gcc-patches@gcc.gnu.org Cc: Richard Sandiford <richard.sandiford@arm.com>, Kyrylo Tkachov <kyrylo.tkachov@arm.com>, Richard Earnshaw <richard.earnshaw@arm.com> Subject: [PATCH 2/4] rtl-ssa: Support for creating new uses [PR113070] Message-ID: <ZaKv0rFkGjlDO14D@arm.com> Content-Type: multipart/mixed; boundary="ahX2hl+F6DOs2sGT" Content-Disposition: inline Content-Transfer-Encoding: 8bit X-ClientProxiedBy: LO4P123CA0424.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:18b::15) To PAWPR08MB8958.eurprd08.prod.outlook.com (2603:10a6:102:33e::15) MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: PAWPR08MB8958:EE_|DB9PR08MB8484:EE_|AM3PEPF0000A791:EE_|PR3PR08MB5708:EE_ X-MS-Office365-Filtering-Correlation-Id: 459a5f07-5a56-4642-66a9-08dc144e87a8 x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: F4hIU4+AC3YV/k/jDkinGysnJgSbNBz0G9sa1zkUfVWO3+l8X+wucuXIUSxeN5a8FTYcDBwny6wHp4zDpxJ3uQwZawQgnRrKgUCNy+uH8Ph3/qrgfH0MylVDgwEQO6lZ31Ya23IT2uq2DTpRQ+x7VNWVHkFV+I9eNwpgQXxsscXINhuUMGgZ78xDn/AbGlsKOFxtV4rnqLZoWxzfE0kQYwp3MXx5dDsOXYmNH0BMleZMawxyMCIdJ8DajZfTHUabBPSmz/I/y1bP8hO49qEY83Nyzt7e4XtUeK2ShhQg3coFAK+7Xg4x9YYpVP8NNdUDGlYAZbELPj6ed1hqGHsgTJL3Hd5/ObEk4KHiQQ1LgSH6hAz1zemP9BWdvD5JscXkpvsEKVeFrVqdTFrXRm9Hhih9FrW9dzojI+K6XspRMlAxghj1KZJp7y3NwcvI5L7/T5AdHKjjLE8i0hcBlcDx6RRyiJYcV+QyxFXNrokG3jJ8i3Yv+7VMW300xkHXVXJ3Il0k9CKnURkxZHkrRzUQvJwRGBzy7blsSYJ2UShIVFmnZdQQoE/XTUDtKifnpeE2cMtgQaq5UJsg5ZrTkfjyWrXMsOmdFDhoNqMxwgQst9aWj6t3FG6uGtB/+Jcc1o+5 X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAWPR08MB8958.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(396003)(366004)(376002)(346002)(136003)(39860400002)(230922051799003)(451199024)(1800799012)(64100799003)(186009)(86362001)(38100700002)(26005)(2616005)(36756003)(83380400001)(6512007)(6506007)(6666004)(316002)(6486002)(33964004)(44144004)(66946007)(54906003)(66556008)(66476007)(6916009)(2906002)(235185007)(44832011)(8676002)(5660300002)(4326008)(478600001)(8936002)(41300700001)(2700100001); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB8484 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: AM3PEPF0000A791.eurprd04.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 99732efe-1d2c-4a74-d05c-08dc144e8307 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: T4n96kxHurZZ0JYl8LqAS5ST1MaOexln++6oTjM0WcqE23V6ceIUA6I3NHXBh03R0/IAw87aSkCEZX7aWOc5Mm64nnVhKcDbD5Xi/d+kNomSVvS7m88ODYiKo8v19ervkQ4O+Nf8DX6BDGoCa33mZEvD9B22utOXt2G9bJx2wC36Ql+ypuLlChjXG4ubObLQkwrEaOFFEQaYAv/1ugM06jzJiMYErD+8Srk0vtWwWurIaMuj9bxmw68sFdHfvg28afdKHSz53trejpQZdiFla0otBpCAXbWryPROuFNypyUljkOBfK/+5l9hzWgMtHCaqBEA2TokB9KsIGtCaEwFvFV/gwpHKW7g/KsWAt01RxBGEYrUFHsjZXOxeqlKMg8KXzVBOhGgF91LU229LBn3e41mLLg0W1qbLI7YZE/Z88xug3d2/KkPnbCVeaHhfdxo1qx8e7OFsYm3GNUVuOpGZcdSCsMyPcEbx5tvUtHN/C1trN3NHz0CSLM6PM0ZQRXB0thywHh3B8QilKC0HX8Ot+id/krDfENYgAyW1zUWpfwpZR9eqiRmRDuAQuK75JnfGixkcQFPDPYZjjF+msFZQOuLSMC0Uc38G1/4XF0AN2JZktekwQ+c/UY8x6Y2DYGLqhm4mZ2Wo1cmVJvQT1gDFafETEq369cGmmN93iIyNXJ/QWXKj6lNvK6+xwg+u95MWkhi7cW0fFkyTZMQnouS4g56O0MQpyrtivs/323FQih3+P4QKecLECeXla+GCeS6kiCaNU3fbZTfYy35wKOsAg== X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFS:(13230031)(4636009)(39850400004)(136003)(396003)(376002)(346002)(230922051799003)(82310400011)(186009)(1800799012)(64100799003)(451199024)(46966006)(36840700001)(40470700004)(33964004)(44144004)(26005)(336012)(478600001)(6486002)(6506007)(6512007)(6666004)(2616005)(47076005)(83380400001)(2906002)(5660300002)(235185007)(41300700001)(70206006)(70586007)(54906003)(316002)(6916009)(44832011)(4326008)(8676002)(8936002)(82740400003)(36860700001)(86362001)(36756003)(81166007)(356005)(40480700001)(40460700003)(2700100001); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Jan 2024 15:44:29.5264 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 459a5f07-5a56-4642-66a9-08dc144e87a8 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: AM3PEPF0000A791.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PR3PR08MB5708 X-Spam-Status: No, score=-12.0 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, FORGED_SPF_HELO, GIT_PATCH_0, KAM_DMARC_NONE, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE, UNPARSEABLE_RELAY 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 <gcc-patches.gcc.gnu.org> List-Unsubscribe: <https://gcc.gnu.org/mailman/options/gcc-patches>, <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe> List-Archive: <https://gcc.gnu.org/pipermail/gcc-patches/> List-Post: <mailto:gcc-patches@gcc.gnu.org> List-Help: <mailto:gcc-patches-request@gcc.gnu.org?subject=help> List-Subscribe: <https://gcc.gnu.org/mailman/listinfo/gcc-patches>, <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe> Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1787990604783363374 X-GMAIL-MSGID: 1787990604783363374 |
Series |
aarch64, rtl-ssa: Fix wrong code in ldp fusion pass [PR113070]
|
|
Checks
Context | Check | Description |
---|---|---|
snail/gcc-patch-check | warning | Git am fail log |
Commit Message
Alex Coplan
Jan. 13, 2024, 3:44 p.m. UTC
This exposes an interface for users to create new uses in RTL-SSA. This is needed for updating uses after inserting a new store pair insn in the aarch64 load/store pair fusion pass. gcc/ChangeLog: PR target/113070 * rtl-ssa/accesses.cc (function_info::create_use): New. * rtl-ssa/changes.cc (function_info::finalize_new_accesses): Handle temporary uses, ensure new uses end up referring to permanent defs. * rtl-ssa/functions.h (function_info::create_use): Declare. --- gcc/rtl-ssa/accesses.cc | 10 ++++++++++ gcc/rtl-ssa/changes.cc | 24 +++++++++++++++++++----- gcc/rtl-ssa/functions.h | 5 +++++ 3 files changed, 34 insertions(+), 5 deletions(-)
Comments
Alex Coplan <alex.coplan@arm.com> writes: > This exposes an interface for users to create new uses in RTL-SSA. > This is needed for updating uses after inserting a new store pair insn > in the aarch64 load/store pair fusion pass. > > gcc/ChangeLog: > > PR target/113070 > * rtl-ssa/accesses.cc (function_info::create_use): New. > * rtl-ssa/changes.cc (function_info::finalize_new_accesses): > Handle temporary uses, ensure new uses end up referring to > permanent defs. > * rtl-ssa/functions.h (function_info::create_use): Declare. > --- > gcc/rtl-ssa/accesses.cc | 10 ++++++++++ > gcc/rtl-ssa/changes.cc | 24 +++++++++++++++++++----- > gcc/rtl-ssa/functions.h | 5 +++++ > 3 files changed, 34 insertions(+), 5 deletions(-) > > diff --git a/gcc/rtl-ssa/accesses.cc b/gcc/rtl-ssa/accesses.cc > index ce4a8b8dc00..3f1304fc5bf 100644 > --- a/gcc/rtl-ssa/accesses.cc > +++ b/gcc/rtl-ssa/accesses.cc > @@ -1466,6 +1466,16 @@ function_info::create_set (obstack_watermark &watermark, > return set; > } > > +use_info * > +function_info::create_use (obstack_watermark &watermark, > + insn_info *insn, > + set_info *set) > +{ > + auto use = change_alloc<use_info> (watermark, insn, set->resource (), set); > + use->m_is_temp = true; > + return use; > +} > + > // Return true if ACCESS1 can represent ACCESS2 and if ACCESS2 can > // represent ACCESS1. > static bool > diff --git a/gcc/rtl-ssa/changes.cc b/gcc/rtl-ssa/changes.cc > index e538b637848..ce51d6ccd8d 100644 > --- a/gcc/rtl-ssa/changes.cc > +++ b/gcc/rtl-ssa/changes.cc > @@ -538,7 +538,9 @@ function_info::finalize_new_accesses (insn_change &change, insn_info *pos) > unsigned int i = 0; > for (use_info *use : change.new_uses) > { > - if (!use->m_has_been_superceded) > + if (use->m_is_temp) > + use->m_has_been_superceded = true; > + else if (!use->m_has_been_superceded) > { Is this part necessary for correctness, or is it just a compile-time optimisation? We already have temporary uses via make_uses_available, and in principle, it's possible to reuse the uses for multiple changes within the same group. E.g. when replacing A with B in multiple instructions, it's OK for the associated insn changes to refer to A's uses directly, or to uses created for A by make_uses_available. So IMO it'd better to drop this hunk if we can. > use = allocate_temp<use_info> (insn, use->resource (), use->def ()); > use->m_has_been_superceded = true; > @@ -609,15 +611,27 @@ function_info::finalize_new_accesses (insn_change &change, insn_info *pos) > m_temp_uses[i] = use = allocate<use_info> (*use); > use->m_is_temp = false; > set_info *def = use->def (); > - // Handle cases in which the value was previously not used > - // within the block. > - if (def && def->m_is_temp) > + if (!def || !def->m_is_temp) > + continue; > + > + if (auto phi = dyn_cast<phi_info *> (def)) > { > - phi_info *phi = as_a<phi_info *> (def); > + // Handle cases in which the value was previously not used > + // within the block. > gcc_assert (phi->is_degenerate ()); > phi = create_degenerate_phi (phi->ebb (), phi->input_value (0)); > use->set_def (phi); > } > + else > + { > + // The temporary def may also be a set added with this change, in > + // which case the permanent set is stored in the last_def link, > + // and we need to update the use to refer to the permanent set. > + gcc_assert (is_a<set_info *> (def)); > + auto perm_set = as_a<set_info *> (def->last_def ()); > + gcc_assert (!perm_set->is_temporary ()); > + use->set_def (perm_set); > + } > } > } > > diff --git a/gcc/rtl-ssa/functions.h b/gcc/rtl-ssa/functions.h > index 58d0b50ea83..962180e27d6 100644 > --- a/gcc/rtl-ssa/functions.h > +++ b/gcc/rtl-ssa/functions.h > @@ -73,6 +73,11 @@ public: > insn_info *insn, > resource_info resource); > > + // Create a temporary use. How about something like: // Create a temporary use of SET as part of a change to INSN. // SET can be a pre-existing definition or one that is being created // as part of the same change group. (Feel free to tweak the wording.) OK those changes, thanks. Richard > + use_info *create_use (obstack_watermark &watermark, > + insn_info *insn, > + set_info *set); > + > // Create a temporary insn with code INSN_CODE and pattern PAT. > insn_info *create_insn (obstack_watermark &watermark, > rtx_code insn_code,
On 22/01/2024 13:45, Richard Sandiford wrote: > Alex Coplan <alex.coplan@arm.com> writes: > > This exposes an interface for users to create new uses in RTL-SSA. > > This is needed for updating uses after inserting a new store pair insn > > in the aarch64 load/store pair fusion pass. > > > > gcc/ChangeLog: > > > > PR target/113070 > > * rtl-ssa/accesses.cc (function_info::create_use): New. > > * rtl-ssa/changes.cc (function_info::finalize_new_accesses): > > Handle temporary uses, ensure new uses end up referring to > > permanent defs. > > * rtl-ssa/functions.h (function_info::create_use): Declare. > > --- > > gcc/rtl-ssa/accesses.cc | 10 ++++++++++ > > gcc/rtl-ssa/changes.cc | 24 +++++++++++++++++++----- > > gcc/rtl-ssa/functions.h | 5 +++++ > > 3 files changed, 34 insertions(+), 5 deletions(-) > > > > diff --git a/gcc/rtl-ssa/accesses.cc b/gcc/rtl-ssa/accesses.cc > > index ce4a8b8dc00..3f1304fc5bf 100644 > > --- a/gcc/rtl-ssa/accesses.cc > > +++ b/gcc/rtl-ssa/accesses.cc > > @@ -1466,6 +1466,16 @@ function_info::create_set (obstack_watermark &watermark, > > return set; > > } > > > > +use_info * > > +function_info::create_use (obstack_watermark &watermark, > > + insn_info *insn, > > + set_info *set) > > +{ > > + auto use = change_alloc<use_info> (watermark, insn, set->resource (), set); > > + use->m_is_temp = true; > > + return use; > > +} > > + > > // Return true if ACCESS1 can represent ACCESS2 and if ACCESS2 can > > // represent ACCESS1. > > static bool > > diff --git a/gcc/rtl-ssa/changes.cc b/gcc/rtl-ssa/changes.cc > > index e538b637848..ce51d6ccd8d 100644 > > --- a/gcc/rtl-ssa/changes.cc > > +++ b/gcc/rtl-ssa/changes.cc > > @@ -538,7 +538,9 @@ function_info::finalize_new_accesses (insn_change &change, insn_info *pos) > > unsigned int i = 0; > > for (use_info *use : change.new_uses) > > { > > - if (!use->m_has_been_superceded) > > + if (use->m_is_temp) > > + use->m_has_been_superceded = true; > > + else if (!use->m_has_been_superceded) > > { > > Is this part necessary for correctness, or is it just a compile-time > optimisation? We already have temporary uses via make_uses_available, > and in principle, it's possible to reuse the uses for multiple changes > within the same group. E.g. when replacing A with B in multiple > instructions, it's OK for the associated insn changes to refer to > A's uses directly, or to uses created for A by make_uses_available. > > So IMO it'd better to drop this hunk if we can. Yeah, I agree it's just a compile-time optimisation and shouldn't be needed for correctness. I initially thought it might save on memory, but IIUC the memory allocated with allocate_temp will get freed when we return from finalize_new_accesses anyway. So I'll drop that hunk and re-test the series, thanks. Alex > > > use = allocate_temp<use_info> (insn, use->resource (), use->def ()); > > use->m_has_been_superceded = true; > > @@ -609,15 +611,27 @@ function_info::finalize_new_accesses (insn_change &change, insn_info *pos) > > m_temp_uses[i] = use = allocate<use_info> (*use); > > use->m_is_temp = false; > > set_info *def = use->def (); > > - // Handle cases in which the value was previously not used > > - // within the block. > > - if (def && def->m_is_temp) > > + if (!def || !def->m_is_temp) > > + continue; > > + > > + if (auto phi = dyn_cast<phi_info *> (def)) > > { > > - phi_info *phi = as_a<phi_info *> (def); > > + // Handle cases in which the value was previously not used > > + // within the block. > > gcc_assert (phi->is_degenerate ()); > > phi = create_degenerate_phi (phi->ebb (), phi->input_value (0)); > > use->set_def (phi); > > } > > + else > > + { > > + // The temporary def may also be a set added with this change, in > > + // which case the permanent set is stored in the last_def link, > > + // and we need to update the use to refer to the permanent set. > > + gcc_assert (is_a<set_info *> (def)); > > + auto perm_set = as_a<set_info *> (def->last_def ()); > > + gcc_assert (!perm_set->is_temporary ()); > > + use->set_def (perm_set); > > + } > > } > > } > > > > diff --git a/gcc/rtl-ssa/functions.h b/gcc/rtl-ssa/functions.h > > index 58d0b50ea83..962180e27d6 100644 > > --- a/gcc/rtl-ssa/functions.h > > +++ b/gcc/rtl-ssa/functions.h > > @@ -73,6 +73,11 @@ public: > > insn_info *insn, > > resource_info resource); > > > > + // Create a temporary use. > > How about something like: > > // Create a temporary use of SET as part of a change to INSN. > // SET can be a pre-existing definition or one that is being created > // as part of the same change group. > > (Feel free to tweak the wording.) > > OK those changes, thanks. > > Richard > > > + use_info *create_use (obstack_watermark &watermark, > > + insn_info *insn, > > + set_info *set); > > + > > // Create a temporary insn with code INSN_CODE and pattern PAT. > > insn_info *create_insn (obstack_watermark &watermark, > > rtx_code insn_code,
diff --git a/gcc/rtl-ssa/accesses.cc b/gcc/rtl-ssa/accesses.cc index ce4a8b8dc00..3f1304fc5bf 100644 --- a/gcc/rtl-ssa/accesses.cc +++ b/gcc/rtl-ssa/accesses.cc @@ -1466,6 +1466,16 @@ function_info::create_set (obstack_watermark &watermark, return set; } +use_info * +function_info::create_use (obstack_watermark &watermark, + insn_info *insn, + set_info *set) +{ + auto use = change_alloc<use_info> (watermark, insn, set->resource (), set); + use->m_is_temp = true; + return use; +} + // Return true if ACCESS1 can represent ACCESS2 and if ACCESS2 can // represent ACCESS1. static bool diff --git a/gcc/rtl-ssa/changes.cc b/gcc/rtl-ssa/changes.cc index e538b637848..ce51d6ccd8d 100644 --- a/gcc/rtl-ssa/changes.cc +++ b/gcc/rtl-ssa/changes.cc @@ -538,7 +538,9 @@ function_info::finalize_new_accesses (insn_change &change, insn_info *pos) unsigned int i = 0; for (use_info *use : change.new_uses) { - if (!use->m_has_been_superceded) + if (use->m_is_temp) + use->m_has_been_superceded = true; + else if (!use->m_has_been_superceded) { use = allocate_temp<use_info> (insn, use->resource (), use->def ()); use->m_has_been_superceded = true; @@ -609,15 +611,27 @@ function_info::finalize_new_accesses (insn_change &change, insn_info *pos) m_temp_uses[i] = use = allocate<use_info> (*use); use->m_is_temp = false; set_info *def = use->def (); - // Handle cases in which the value was previously not used - // within the block. - if (def && def->m_is_temp) + if (!def || !def->m_is_temp) + continue; + + if (auto phi = dyn_cast<phi_info *> (def)) { - phi_info *phi = as_a<phi_info *> (def); + // Handle cases in which the value was previously not used + // within the block. gcc_assert (phi->is_degenerate ()); phi = create_degenerate_phi (phi->ebb (), phi->input_value (0)); use->set_def (phi); } + else + { + // The temporary def may also be a set added with this change, in + // which case the permanent set is stored in the last_def link, + // and we need to update the use to refer to the permanent set. + gcc_assert (is_a<set_info *> (def)); + auto perm_set = as_a<set_info *> (def->last_def ()); + gcc_assert (!perm_set->is_temporary ()); + use->set_def (perm_set); + } } } diff --git a/gcc/rtl-ssa/functions.h b/gcc/rtl-ssa/functions.h index 58d0b50ea83..962180e27d6 100644 --- a/gcc/rtl-ssa/functions.h +++ b/gcc/rtl-ssa/functions.h @@ -73,6 +73,11 @@ public: insn_info *insn, resource_info resource); + // Create a temporary use. + use_info *create_use (obstack_watermark &watermark, + insn_info *insn, + set_info *set); + // Create a temporary insn with code INSN_CODE and pattern PAT. insn_info *create_insn (obstack_watermark &watermark, rtx_code insn_code,