Message ID | Zhfie6EiTOtI3MZr@arm.com |
---|---|
State | New |
Headers |
Return-Path: <gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org> X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 39B24385840E for <patchwork@sourceware.org>; Thu, 11 Apr 2024 13:16:27 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04on2048.outbound.protection.outlook.com [40.107.6.48]) by sourceware.org (Postfix) with ESMTPS id BAF723858D1E for <gcc-patches@gcc.gnu.org>; Thu, 11 Apr 2024 13:15:53 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org BAF723858D1E 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 BAF723858D1E Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=40.107.6.48 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1712841356; cv=pass; b=Ikami4lsSKa44heMNJqGXHLgmhS+F+3bIHKWHmHpBCDAq0hP0OuiQ2C5PtlE+GSF75sfbwMddighaSVQVaXhH/a0QXCCtdfBE/JWMc5pn/j/O4CWefsORvFVYiavkbr+d5D8wLgdOBv/frrD4TC2AcBojzDxP+lDIu0fM8e9upk= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1712841356; c=relaxed/simple; bh=B47PLDtCByEubK9FpNllccRYeT9MqcJ1jIgWGRsN6W4=; h=DKIM-Signature:DKIM-Signature:Date:From:To:Subject:Message-ID: MIME-Version; b=JVNIJGwjzq+2+6XH6PMtAd1jyWJ4pT0VAFQYRWhBXD8MB/dAyrSp+5PhEf0KPuIlL0EvltotYljMmFk/Cvsv5g+1UE53yCXZ90s/geytxZkBL8oQOvEF/DsEhyaNA09v96hRtFJj1YT2eDUHSWL1YQm1C2hHaKvYejA2tY+hFA0= ARC-Authentication-Results: i=3; server2.sourceware.org ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=IXYAmW9HCimA5SPgpxC4andSFkroSTckuNvF8tJbljuw6eD2BBmOg/fS0C8916iZ9w2wWJ7e7f2Ncqso0cChKAPCdLhUA5ngDmO+DJA11YM8msxoTXzXRXj0+ymWPQPB6rPIeZ0KYC5tBQHr+1HgLKZlYYyfPc/Kv1QBBZU6p6jSAM2qehIqNyv68yuZJEnwmR/t8QyssDmfJF4K4Y04aMCWqH4RqbXAzlurCFpIiS8+l3JdTQGSsdrJpKkqPt+ri8a1WTnrbER7fgVNjYj4ncepAHSTX+mGIbG0HYcCvuyp0DrRnTOQ86YquHokYeyGfxEWVfaRbflHVKifZyAovA== 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=VGx/UJchmYWV5JCXnpH20M2v15jOAu6JR3nntxNNOwk=; b=W4crKNrOuOC/huDb9G7whHBIyCmhvvZaLSNlatIMyYJtL0oBB/AQBb/Em2rGMkFuVbHbqoDqbHMB7P32E2nMAVA0P6f81G2WUFwHOt50FLRttcrEoIiUfLqz1bzZy1//zRx/cgqXsGH7gc3QNVXi/UvJ1RMwb+UlkUM7UB2I7g+cn40aB7qbtwZxxEeS8sKvxRmiTtlZjL7ovx7ls+EM4Ia7VVb20eYBKDcEhKn1tIgjibu3wn1A3Ki08u4FcJJXW6GAn7FScLFs08YbkZzhPmOQtfRz4bqOq57GYrGTogaD0kh2+9ciAo2cHS0YRvlicQVnRqhZkLQxxqKVCbS0Wg== 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=VGx/UJchmYWV5JCXnpH20M2v15jOAu6JR3nntxNNOwk=; b=L4jB9g+UVcafgdKJmsm2grJynazrEQG2PeC11oqwK5VH09lK3UT6oDVgSWerC0vr+AxzhLfHOu4oqdvbFzO7gQnWLkwtLUQf+/6OjbBXrMp6hNGUYRmKQwyPzaE+WkD+F6qnxpXPUKSMPgt9tP+5Fg9TnwbELfkP7no9Ave78qE= Received: from DU7P195CA0025.EURP195.PROD.OUTLOOK.COM (2603:10a6:10:54d::30) by GV2PR08MB8701.eurprd08.prod.outlook.com (2603:10a6:150:b2::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.46; Thu, 11 Apr 2024 13:15:51 +0000 Received: from DU6PEPF0000A7DE.eurprd02.prod.outlook.com (2603:10a6:10:54d:cafe::bc) by DU7P195CA0025.outlook.office365.com (2603:10a6:10:54d::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7472.22 via Frontend Transport; Thu, 11 Apr 2024 13:15:51 +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 DU6PEPF0000A7DE.mail.protection.outlook.com (10.167.8.38) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.7452.22 via Frontend Transport; Thu, 11 Apr 2024 13:15:51 +0000 Received: ("Tessian outbound 9d16f63426bd:v300"); Thu, 11 Apr 2024 13:15:50 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: b599512000508825 X-CR-MTA-TID: 64aa7808 Received: from f4e757d0529f.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 64C70901-E04C-40B0-805F-F5E9582E7E18.1; Thu, 11 Apr 2024 13:15:44 +0000 Received: from EUR04-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id f4e757d0529f.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Thu, 11 Apr 2024 13:15:44 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZYmCJMKIyXLVvr5yi7orEpH8cvsXl4qSIk1C+KR1o8j6ElvLhkZ+g6TXMDN5DCZFyfEzyVwXI0wz/tWZvuKA6FXNaJZzW5t8TQFAw99S4rZfJVbVdJYPmksTKZt3DsxQkkXAq8PK1MRhZfbcNJSncYEheOOafTLqGdo7rVnhFTLc15phr1J7o51YC0YxBNXcUIGLWckZbytZv/13M7rK65UZcgqYuJ2nD25v7xvQOK51379qilnCwoHbCkvb+0RrBIBEGPgIxjhga/xDOLs6mE9JCMC2InD9QnLT9FAATAw1qdTD8VzG2qH7HO+mVf0oPs/rhrkzREufjf4WIFuIpg== 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=VGx/UJchmYWV5JCXnpH20M2v15jOAu6JR3nntxNNOwk=; b=a6MCD5xHzJygzQtja7L60RV76b74enBTbnJ+R7zwkjRfEiUNxb+XPyJMiCmfZfwEkuPdstexBH1msXDQ2+5UzvwHxCiNk73Tkh74qhoZPeTopv+gnpZEGzf4/ISwEoVu/tbWnsnZgY5TwQv2+wPlkD+Ei3uUSX/d2m97rutg/86TMjdP3rFUWbaohwBbIGgo84j4pfP1DjaG8iPUW81PwiM14AC6SJnhZ9r+a/F+xq4tEU4+XQgWpxhF/lkLDinFhyklFL8IROTCcnefZKAV44GTOncUjTVhOG0oCqWcYOTMS+aD7jq1kL9PK2yoUY/+im2xwLNlVvGxBiZD9/ZV/w== 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=VGx/UJchmYWV5JCXnpH20M2v15jOAu6JR3nntxNNOwk=; b=L4jB9g+UVcafgdKJmsm2grJynazrEQG2PeC11oqwK5VH09lK3UT6oDVgSWerC0vr+AxzhLfHOu4oqdvbFzO7gQnWLkwtLUQf+/6OjbBXrMp6hNGUYRmKQwyPzaE+WkD+F6qnxpXPUKSMPgt9tP+5Fg9TnwbELfkP7no9Ave78qE= 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 PAVPR08MB9482.eurprd08.prod.outlook.com (2603:10a6:102:318::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.46; Thu, 11 Apr 2024 13:15:42 +0000 Received: from PAWPR08MB8958.eurprd08.prod.outlook.com ([fe80::9561:db03:3f6c:5634]) by PAWPR08MB8958.eurprd08.prod.outlook.com ([fe80::9561:db03:3f6c:5634%5]) with mapi id 15.20.7409.042; Thu, 11 Apr 2024 13:15:41 +0000 Date: Thu, 11 Apr 2024 14:15:39 +0100 From: Alex Coplan <alex.coplan@arm.com> To: gcc-patches@gcc.gnu.org Cc: Richard Earnshaw <richard.earnshaw@arm.com>, Richard Sandiford <richard.sandiford@arm.com> Subject: [PATCH] aarch64: Preserve mem info on change of base for ldp/stp [PR114674] Message-ID: <Zhfie6EiTOtI3MZr@arm.com> Content-Type: multipart/mixed; boundary="Kj8tR8g444w2WUt4" Content-Disposition: inline X-ClientProxiedBy: LO3P123CA0014.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:ba::19) To PAWPR08MB8958.eurprd08.prod.outlook.com (2603:10a6:102:33e::15) MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: PAWPR08MB8958:EE_|PAVPR08MB9482:EE_|DU6PEPF0000A7DE:EE_|GV2PR08MB8701:EE_ X-MS-Office365-Filtering-Correlation-Id: a4f997e0-d758-4a66-8be6-08dc5a298295 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: ojzXbuhnYIrUUEALVByxsir1vI4uVF4oYE33qxQ57UkQOJm6O3w2XEVnApAsZSTpV6+33du+dYriItBRVA6XUvV15F4bI2+u7iUiiZws3sVbk/r9iVDAflmK0er0Gk6rMSZ9KWJsFg8EwumqmsG+JlLr8hzSpummT6hJn8vc4iTsJHfXlfAVJawJ4KrAnWFZ1Os0mu2XcFxqkNPACUxBK+yDIddFFZdNXwxpNcqayLgdzknKAF02JiuDrlXul2oUyqxopEip2BD5IVpjEEW28UKpoSV/nFK2B3drFcgBStsoEPmjwoYAoRa8y70KH12WPmXkRcDhLhLxADbb+KkSgTQRTZ5zQGisn5ybGP2jzjP7UMCS0ymwqo2LER55p6tO8e1RTXZ0sFICD84ddApvc1K1jHIL6mKYJnn2qn2GJaGQZ2SIsemjLhNJw+B9JkvKhR7y9T6HJp8yO4ygOyaW2/PmFO6bTjfylJ/4VrKNMnk7alyabDQtGLSlwkRdidWn4XzxD6SCbvLn6UT/GmJdD5mH6BkFcixP1MGYESkspUVaUslO6rClat3uRfNruwFp3noHr6FSsNwvIozc5BhyQpxD8gaI7l6c2XVPEWrT7Sw= 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)(1800799015)(376005)(366007); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAVPR08MB9482 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: DU6PEPF0000A7DE.eurprd02.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: a8ca1c71-d8b5-4de0-c1a1-08dc5a297cf9 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 1n45xttTwhMHYiw9M+Psw+tskRpSz3dDk22cKc2cTVdpqf5/I7zIPK/fuv9hZv8RMcr61m62DAsDoR0Vc0Z9N5SCkfDMzc6zUCq57/AAFPEQNAP8w5oln0CfRt1Hwgh25kfqhdLm0MXHVaxbfUd5/1jqgWzVRIQvVnvBX6U6ePq6RogB9PEzXHvT9xm2qw5Irom1yfmVAvJ0HcLwhWFqhndyRtFWQQ8U3G+bE0q3Ll2bAGios+SSME+JXGbwdD3Q+0utony2n2WHufnoViX7v8Cevk0v2UWA49ntaKtngTDM2FeUfHscNf6QXmXTRK1jwUVJ9xEo0Q33/LNhke2dTkt2r9Ni5XtHPioyCKkGKDamjc7J/yM4aA7tjYiGHEm5FKUoWbZSDXAccKjVDbPx+QTKzGezzBonBAhhFbo9eYT+yrrbKf1U2vFycLTm/SyhtzoH+jqik466VIT62EP5TXIRXgskoP0IiUcsl50t9ulyb1yXt9NF7PXbf/c8I1tMZLlB2IAmi7T6QQ49czHL5DfVO5Qt2fHSA+Ns/oSvUV/OjLkqKjowJ2/0VTDMf86QqoMteFkzAEwDIjFbvvvkK7OTw6ka/z8rE3Dj/wrzfGMoz7oEbCVPLZ4g68XO+WDzmwfQ80gbPsaHqyH4gv+roIvzB2TwsP4axX/a0rv6SqbR358t73YzCwz0D3wL/4oxwuM3el9F8eVWWamkgmakkg== 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)(1800799015)(376005)(82310400014)(36860700004); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Apr 2024 13:15:51.0453 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a4f997e0-d758-4a66-8be6-08dc5a298295 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: DU6PEPF0000A7DE.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV2PR08MB8701 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, KAM_SHORT, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_NONE, TXREP, 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+patchwork=sourceware.org@gcc.gnu.org |
Series |
aarch64: Preserve mem info on change of base for ldp/stp [PR114674]
|
|
Checks
Context | Check | Description |
---|---|---|
linaro-tcwg-bot/tcwg_gcc_build--master-arm | success | Testing passed |
linaro-tcwg-bot/tcwg_gcc_build--master-aarch64 | success | Testing passed |
linaro-tcwg-bot/tcwg_gcc_check--master-aarch64 | fail | Testing failed |
linaro-tcwg-bot/tcwg_gcc_check--master-arm | success | Testing passed |
Commit Message
Alex Coplan
April 11, 2024, 1:15 p.m. UTC
Hi, The ldp/stp fusion pass can change the base of an access so that the two accesses end up using a common base register. So far we have been using adjust_address_nv to do this, but this means that we don't preserve other properties of the mem we're replacing. It seems better to use replace_equiv_address_nv, as this will preserve e.g. the MEM_ALIGN of the mem whose address we're changing. The PR shows that by adjusting the other mem we lose alignment information about the original access and therefore end up rejecting an otherwise viable pair when --param=aarch64-stp-policy=aligned is passed. This patch fixes that by using replace_equiv_address_nv instead. Notably this is the same approach as taken by aarch64_check_consecutive_mems when a change of base is required, so this at least makes things more consistent between the ldp fusion pass and the peepholes. Bootstrapped/regtested on aarch64-linux-gnu, OK for trunk when stage 1 opens for GCC 15? Thanks, Alex gcc/ChangeLog: PR target/114674 * config/aarch64/aarch64-ldp-fusion.cc (ldp_bb_info::fuse_pair): Use replace_equiv_address_nv on a change of base instead of adjust_address_nv on the other access. gcc/testsuite/ChangeLog: PR target/114674 * gcc.target/aarch64/pr114674.c: New test.
Comments
Alex Coplan <alex.coplan@arm.com> writes: > Hi, > > The ldp/stp fusion pass can change the base of an access so that the two > accesses end up using a common base register. So far we have been using > adjust_address_nv to do this, but this means that we don't preserve > other properties of the mem we're replacing. It seems better to use > replace_equiv_address_nv, as this will preserve e.g. the MEM_ALIGN of the > mem whose address we're changing. > > The PR shows that by adjusting the other mem we lose alignment > information about the original access and therefore end up rejecting an > otherwise viable pair when --param=aarch64-stp-policy=aligned is passed. > This patch fixes that by using replace_equiv_address_nv instead. > > Notably this is the same approach as taken by > aarch64_check_consecutive_mems when a change of base is required, so > this at least makes things more consistent between the ldp fusion pass > and the peepholes. > > Bootstrapped/regtested on aarch64-linux-gnu, OK for trunk when stage 1 > opens for GCC 15? Yes, thanks. Richard > > Thanks, > Alex > > > gcc/ChangeLog: > > PR target/114674 > * config/aarch64/aarch64-ldp-fusion.cc (ldp_bb_info::fuse_pair): > Use replace_equiv_address_nv on a change of base instead of > adjust_address_nv on the other access. > > gcc/testsuite/ChangeLog: > > PR target/114674 > * gcc.target/aarch64/pr114674.c: New test. > > diff --git a/gcc/config/aarch64/aarch64-ldp-fusion.cc b/gcc/config/aarch64/aarch64-ldp-fusion.cc > index 365dcf48b22..4258a560c48 100644 > --- a/gcc/config/aarch64/aarch64-ldp-fusion.cc > +++ b/gcc/config/aarch64/aarch64-ldp-fusion.cc > @@ -1730,11 +1730,11 @@ ldp_bb_info::fuse_pair (bool load_p, > adjust_amt *= -1; > > rtx change_reg = XEXP (change_pat, !load_p); > - machine_mode mode_for_mem = GET_MODE (change_mem); > rtx effective_base = drop_writeback (base_mem); > - rtx new_mem = adjust_address_nv (effective_base, > - mode_for_mem, > - adjust_amt); > + rtx adjusted_addr = plus_constant (Pmode, > + XEXP (effective_base, 0), > + adjust_amt); > + rtx new_mem = replace_equiv_address (change_mem, adjusted_addr); > rtx new_set = load_p > ? gen_rtx_SET (change_reg, new_mem) > : gen_rtx_SET (new_mem, change_reg); > diff --git a/gcc/testsuite/gcc.target/aarch64/pr114674.c b/gcc/testsuite/gcc.target/aarch64/pr114674.c > new file mode 100644 > index 00000000000..944784fd008 > --- /dev/null > +++ b/gcc/testsuite/gcc.target/aarch64/pr114674.c > @@ -0,0 +1,17 @@ > +/* { dg-do compile } */ > +/* { dg-options "-O3 --param=aarch64-stp-policy=aligned" } */ > +typedef struct { > + unsigned int f1; > + unsigned int f2; > +} test_struct; > + > +static test_struct ts = { > + 123, 456 > +}; > + > +void foo(void) > +{ > + ts.f2 = 36969 * (ts.f2 & 65535) + (ts.f1 >> 16); > + ts.f1 = 18000 * (ts.f2 & 65535) + (ts.f2 >> 16); > +} > +/* { dg-final { scan-assembler-times "stp" 1 } } */
diff --git a/gcc/config/aarch64/aarch64-ldp-fusion.cc b/gcc/config/aarch64/aarch64-ldp-fusion.cc index 365dcf48b22..4258a560c48 100644 --- a/gcc/config/aarch64/aarch64-ldp-fusion.cc +++ b/gcc/config/aarch64/aarch64-ldp-fusion.cc @@ -1730,11 +1730,11 @@ ldp_bb_info::fuse_pair (bool load_p, adjust_amt *= -1; rtx change_reg = XEXP (change_pat, !load_p); - machine_mode mode_for_mem = GET_MODE (change_mem); rtx effective_base = drop_writeback (base_mem); - rtx new_mem = adjust_address_nv (effective_base, - mode_for_mem, - adjust_amt); + rtx adjusted_addr = plus_constant (Pmode, + XEXP (effective_base, 0), + adjust_amt); + rtx new_mem = replace_equiv_address (change_mem, adjusted_addr); rtx new_set = load_p ? gen_rtx_SET (change_reg, new_mem) : gen_rtx_SET (new_mem, change_reg); diff --git a/gcc/testsuite/gcc.target/aarch64/pr114674.c b/gcc/testsuite/gcc.target/aarch64/pr114674.c new file mode 100644 index 00000000000..944784fd008 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/pr114674.c @@ -0,0 +1,17 @@ +/* { dg-do compile } */ +/* { dg-options "-O3 --param=aarch64-stp-policy=aligned" } */ +typedef struct { + unsigned int f1; + unsigned int f2; +} test_struct; + +static test_struct ts = { + 123, 456 +}; + +void foo(void) +{ + ts.f2 = 36969 * (ts.f2 & 65535) + (ts.f1 >> 16); + ts.f1 = 18000 * (ts.f2 & 65535) + (ts.f2 >> 16); +} +/* { dg-final { scan-assembler-times "stp" 1 } } */