From patchwork Mon Feb 3 13:04:11 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alfie Richards X-Patchwork-Id: 105911 Return-Path: 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 AAC5E385840A for ; Mon, 3 Feb 2025 13:06:51 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on20626.outbound.protection.outlook.com [IPv6:2a01:111:f403:2612::626]) by sourceware.org (Postfix) with ESMTPS id 2AD1E385840A for ; Mon, 3 Feb 2025 13:05:03 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 2AD1E385840A 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 2AD1E385840A Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=2a01:111:f403:2612::626 ARC-Seal: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1738587903; cv=pass; b=NvPs+KNATHmFRrSrIIDhNQZbTL9dT3cygHqE8yiZNsDXFLsy2ygceCfEwhXyd4ktE5TpQS0i6lKwhIhP4PfCdU1DuoZLDzopoWZSfrM4KuCyRrGfw463lVvSHFQZJc2eSsxl9LqvJna7HkrcCBBhw0XclBm6myrIw18xc9AJvZ8= ARC-Message-Signature: i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1738587903; c=relaxed/simple; bh=TwJo4UMLTZMb0bLbxuydPd3Ect3xJPE/MT02fQPMYLg=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=KdVq1IVES9zEkB6SHe2O6k3DNENhcErXuI3M42pyfa+sjwgxMWJf2M9mhIxHqLX9Ch93hIq5zauO0kaANX8ZmlJF1cOBmk1vd5qlBauVF3cCtkzkeGu4jF5iUNh71yb7w2x80YumaSbqLBeQMq7hXCoXEbeFvsWn8rd4eUcaXxE= ARC-Authentication-Results: i=3; server2.sourceware.org ARC-Seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=xWOqOqI1dsCqqAdFSGGFhRNjjri+/qvxQGGOJROWl8wkVWhbIUV6JgHgVWfrKjcbWgE3MRfRCYsFwUSDk7jQXTD7h8wlqlS5xMNxEiFNolw7qoiiLnTiKD9E/Dd9RcxO1SsSKiztEoEtpXXCMFBEo+WITxdL5EfKjyPz/yfOWRYR4NPa8M5SIY37knBPSvc2c+hk/41i3HhcY254hQcf/QJQ0pVVm0sYlbIdx+EhBxJqV/xbnhjyuaJW1yGce5TTj33vjzaYG++tI29Zboikddno3968Jtc5Xz/qJy8JzGsLeY3ITlTxBCmK1PnEkMO6K/rPh46EVcjMDqnw1KavIA== 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=L5zlel4XZUzh1RBfoArQJ7k6DnYty86M832SewqbpJg=; b=HpBujYXfIc5POu3sVsxv1ZkENw5ZPSmhRYq8AeLJ74dX4Wn1Xh3YZRNy67Kr+qU9FG2OmL4fETQiFcqoSYhrAvXJM2GQAo2nwUnTIzZcdoMBPoo4GXlibig3o+LdENaD/4aMIcFlAqkzF0v9Mk90J2sGYsdRH2ntYIjxH+flmLqr9tKOKdMG9GzwC79VCa3R019ozJtZ/4pFhjwCkd8i7wuqqlNo5xYAMahYJyltQgOdOW6L7orDOaNPCWm4hoB64KtqhaNrXZ5btNWGFM+C36KI6Jz6aG2eKLQjDzUEsG1cRn4i4zvTRXAKesmyIYAkNH5m+DxYCTqPWKTBHiFFjw== 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=arm.com; arc=pass (0 oda=0 ltdi=1) 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=L5zlel4XZUzh1RBfoArQJ7k6DnYty86M832SewqbpJg=; b=LBHo83o2sRgPYAYWec9g3OnAy+yvueRcyJG7wkpabI+hz2IrRpUol4QUJvj0Hmim9rIuRTu0mWOCy8vo7MwTcFPXRZJvH6PT6XrMTy52N2XMEglLD1xUilIekt23OFkqjXtUj+OkEFTxPVEznhCF/WLAmuowQ3CJhgw15OGiBmE= Received: from DB3PR08CA0009.eurprd08.prod.outlook.com (2603:10a6:8::22) by PAXPR08MB6414.eurprd08.prod.outlook.com (2603:10a6:102:12e::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8398.25; Mon, 3 Feb 2025 13:04:56 +0000 Received: from DB1PEPF000509F5.eurprd02.prod.outlook.com (2603:10a6:8:0:cafe::10) by DB3PR08CA0009.outlook.office365.com (2603:10a6:8::22) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8398.25 via Frontend Transport; Mon, 3 Feb 2025 13:04:56 +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=arm.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 DB1PEPF000509F5.mail.protection.outlook.com (10.167.242.151) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8398.14 via Frontend Transport; Mon, 3 Feb 2025 13:04:55 +0000 Received: ("Tessian outbound 9c42971d7905:v560"); Mon, 03 Feb 2025 13:04:54 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 09614aa984c82265 X-TessianGatewayMetadata: o6v517LPrE+skz52CzMk78zVg0yPuAh7usOrSEzQCY2TTbJf3k+VLKzAQheDSXpJVea6399CBQN0mtGxr0AzPElBkm0rjXCBRN8JI3Yxj05DKCFytCDu5mO1F/f7ftp39vTqGhO+uh2Q/5IUfzxNaGmFi/xmZWeLeVoaTFYd3Yo= X-CR-MTA-TID: 64aa7808 Received: from Lef98b5b2c853.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 95DC75D7-33E5-4AB8-B752-9D8170597D7C.1; Mon, 03 Feb 2025 13:04:47 +0000 Received: from EUR03-AM7-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id Lef98b5b2c853.1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384); Mon, 03 Feb 2025 13:04:47 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=yH4dNFYvrSyoR7pkxsFVPUopiS1/WKsTy08bYEpPffvZhAzedvhpUlF0ORFAMJAO90OdEHNPfouRHdB3L5EdO/mUpOxWmHdZ16VX+O6Tk1EHuraAJsjQhpD8V59lYjuh8sDNfzzuTBhGlv2or0Rx0hx+xMfyUslXHA47RDS1SYynLM3BPted1AN6Vogfj1S7dbb3xHyYpGyEI49rsw9U2tOvp6805RM+bdjhIl7iKHK+1+/2nIV2jGYbKRVd2KC17fR9WF23FlEcvVmBbgc/OiC7v8iIGRVHx4bVZNtEZofFx/YXuI6Cr/3PQRHA6+PyW1XwlIZ4hgJe9fIsyRYBiQ== 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=L5zlel4XZUzh1RBfoArQJ7k6DnYty86M832SewqbpJg=; b=RbsEFzGHTSEwSPL+AMaUJAvY7VmZr2Xvq9Hg9F07cr/bIhoW8uFQ2bLAEnAnf8/BLGD5c3VZ9hZJn9WjQfUya3xgDd0wi3J+TSRe/X5dFLDkmPsdNQ/hV9dZNVIAps6FJTFSwNQ5kuY5Y51rAnq5TsCVAqHm5W/ewRx28JYC+CfKbxFBNfWAJ4oZMrbJlbwW7OnL0+Tw5NujlBNkQ5rY+RAb1Sy5VbNDN1fZjycYaF2g4T2/hNg+cz9gwHyQMkWrT282lh92KaLQqB11oJCtRQD3IZ1agFyo3ZnOYtODNpg9Oh5FvwJQB41LMkZ+DXAVRrHF6pE7Oo7JDv+LZ1RCgg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=fail (sender ip is 172.205.89.229) smtp.rcpttodomain=gcc.gnu.org smtp.mailfrom=arm.com; dmarc=fail (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=L5zlel4XZUzh1RBfoArQJ7k6DnYty86M832SewqbpJg=; b=LBHo83o2sRgPYAYWec9g3OnAy+yvueRcyJG7wkpabI+hz2IrRpUol4QUJvj0Hmim9rIuRTu0mWOCy8vo7MwTcFPXRZJvH6PT6XrMTy52N2XMEglLD1xUilIekt23OFkqjXtUj+OkEFTxPVEznhCF/WLAmuowQ3CJhgw15OGiBmE= Received: from DB9PR05CA0015.eurprd05.prod.outlook.com (2603:10a6:10:1da::20) 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.8398.25; Mon, 3 Feb 2025 13:04:42 +0000 Received: from DB1PEPF0003922D.eurprd03.prod.outlook.com (2603:10a6:10:1da:cafe::a4) by DB9PR05CA0015.outlook.office365.com (2603:10a6:10:1da::20) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.8398.24 via Frontend Transport; Mon, 3 Feb 2025 13:04:42 +0000 X-MS-Exchange-Authentication-Results: spf=fail (sender IP is 172.205.89.229) smtp.mailfrom=arm.com; dkim=none (message not signed) header.d=none;dmarc=fail action=none header.from=arm.com; Received-SPF: Fail (protection.outlook.com: domain of arm.com does not designate 172.205.89.229 as permitted sender) receiver=protection.outlook.com; client-ip=172.205.89.229; helo=nebula.arm.com; Received: from nebula.arm.com (172.205.89.229) by DB1PEPF0003922D.mail.protection.outlook.com (10.167.8.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8398.14 via Frontend Transport; Mon, 3 Feb 2025 13:04:42 +0000 Received: from AZ-NEU-EX04.Arm.com (10.251.24.32) by AZ-NEU-EX06.Arm.com (10.240.25.134) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Mon, 3 Feb 2025 13:04:29 +0000 Received: from AZ-NEU-EX04.Arm.com (10.251.24.32) by AZ-NEU-EX04.Arm.com (10.251.24.32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Mon, 3 Feb 2025 13:04:28 +0000 Received: from ip-10-248-139-135.eu-west-1.compute.internal (10.252.78.54) by AZ-NEU-EX04.Arm.com (10.251.24.32) with Microsoft SMTP Server id 15.1.2507.39 via Frontend Transport; Mon, 3 Feb 2025 13:04:27 +0000 From: Alfie Richards To: CC: , , , , , , , Alfie Richards Subject: [PATCH v1 06/16] Change function versions to be implicitly ordered. Date: Mon, 3 Feb 2025 13:04:11 +0000 Message-ID: <20250203130421.2192732-8-alfie.richards@arm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250203130421.2192732-1-alfie.richards@arm.com> References: <20250203130421.2192732-1-alfie.richards@arm.com> MIME-Version: 1.0 X-EOPAttributedMessage: 1 X-MS-TrafficTypeDiagnostic: DB1PEPF0003922D:EE_|DB9PR08MB8484:EE_|DB1PEPF000509F5:EE_|PAXPR08MB6414:EE_ X-MS-Office365-Filtering-Correlation-Id: 3af0ab8c-d1ae-42c1-0152-08dd44535ac7 x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; ARA:13230040|376014|82310400026|36860700013|1800799024; X-Microsoft-Antispam-Message-Info-Original: RLpuLqkd4x0J/lecwcPk1R6tDOXzUlQVsHF6RnReqTQMzxrWKQmFpGfNt8qg0+LqneHDmkNdCVeiiJvyCZ20qSlTLQk6OedI2lbUokG3Gg7jFAuBHDiXSpz0aiCqG04DDYzUdbftHLcCSt/hscZ2wuW7lBIqiE6E6FutetFjuxU8x8fYRh1C/Dd4I1OFpteyO/nOX+eFkXhHIAcsuWTqaYHNPGkE41AZi8Sg/+hVZaGGOnIGwFXWsLcol1u+l07kUTPNLOG5Y+0XbFjC6+1KZ6xdQa/Q0csOfhLHWv+wZx8TrL+yfXfRf7HKOYOgx1K7f4GeRGxP1YCl+v93eNkfgZRDSNsK3FZuVljarrbOxeyGlKdPh2uLIz6yWsGVO1QWzCherFrsY4cxS9wB6b5cG3atDZ3UcI32dSkp2HuRfQRKwmWtypQSpTkpNYbYxUsWnjX3PI9QsfZ8pd9qiTdrsLP5169NMbD2a6ua3r3RuRNAxPlf3aIYS+FuBOKlmboypgNV34f/pJUdOJzGa48PNsQFM7dqj2vkRkX3J3WcAcarQp5ssMagaS+PSp6z6R3aWUNvoon8PhUgbupHNvrY3WzWwnZ3QLnzlo/AlRpMH74GToNhbdFxx2k8jUKpbUI0WByFOmX2xrL+tMlYCSD88dzOhEZenCLSa+wezpqL/nUgBPsGMP/vCx5xbj1VSKAPtrl7zofd0xtCIjnUL2/pmvf2/GUxhygGCz90lVCTt/e2/FQDqh4Ijh0iGaqJY335lN5oWMn6QPd2ZYLqm1hGI+Ogsmq7YKKAeqNaOQqLhXI8hQYmHjQsVlZmrjIwzXiFwzoZ19y+0yDfpFL6zkSW68ukuE7nLk4Jiff28bmfbmPJKQ7xJ+Uez/716ksp+kUv/NyPYfroSfbF8hLrdh+dC+NoxUgf+IjpDxaT6sBffr3zr7J7VDPdEW8fFzVp7vFmO4/+KBkehUmW6clb1sC+4GKKjlHkydSLoVIpb1ssQeuazK1OwhGEvN7bLqcFCf2WRVo+H0rQoOxRVqwtWMA9K4jdL+hwJYoeaaXSB5KIHk8syWyKrDlZCce3VZv6IsDtLG8HK0YBDvonnwwQMDD84oE/f/0qWEY4wjWc5sR+ZWG4nM42J3SSRfBtp5fUHrgOHbNdvHPsfvigQWtxx8Y/zHTwdEDu0DTVtKHfyQQ/CFQbW2s7zH0zGfXjsWzpvUyAh1zk0xXa/qcODHQOpPStvtqGMttEnH/bYF4RxHUJamJa1Cul2s7whB1UWvgZKVqOrCispSnvN72TBDZKIUzqsUpzjmAJuYdWZ+N124sHasGTMXPIRQSXPWBBfIBTWvy5wkdwjXe6YwsJQ5FCoegd2i1L1GqP7Mh2npvg/zjo5aR8pZyDx+JEk6qyy+XnneNkdABBbjH3iIr40TtnauQS/ZwcN84TH4aWTJQttJC+Qji4Nv69Yfctj+B900U3tKX1cOQIaFPHPdza35ZmCWgN75k4SpSmfi8zGulLO7isHjA= 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)(376014)(82310400026)(36860700013)(1800799024); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB8484 X-MS-Exchange-SkipListedInternetSender: ip=[2603:10a6:10:1da::20]; domain=DB9PR05CA0015.eurprd05.prod.outlook.com X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB1PEPF000509F5.eurprd02.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 8a4fa3b5-6e3e-4725-f14c-08dd4453535a X-Microsoft-Antispam: BCL:0; ARA:13230040|36860700013|376014|82310400026|35042699022|1800799024|14060799003; X-Microsoft-Antispam-Message-Info: =?utf-8?q?w8qRhh3I1tCgJMZBFQrKEkPOA6mIoBf?= =?utf-8?q?K5K4oZlcw3tLd1rQUiczw8no3P68EY0R54ORJd6nD3MzBqI5JynAX9RL4ETRkZEiP?= =?utf-8?q?dxBk09QXodI2jQvIP/WM7cxEVq4hVdYcM0RxWo7mCZPdF+jTU0P2g1h/D05UBYcHn?= =?utf-8?q?OfhJhHkDZT6/QQ78DKGe7BB2Op1yHIs96GJ71UB0uLz2CXxDgRK1G1vYW+ZxGmnHC?= =?utf-8?q?8vutlUhP3zJfUJBt7PGdeTiUKC5oBCLX1/vZNjZsr/hprBxvtGdf0PkzzJRXHlbI4?= =?utf-8?q?ufWHTRJ3wv8SG3/89QgbJk6bUOe1sRlUbbqfbYTEr7nopOj3JBJwXm4KjrA8KHt2r?= =?utf-8?q?QqnkC3g7X/i/PLDBgAS6Vx2LXwIqv3f8VrrXHwkZP5ueOPZDCY8oQaavSq0c/k0DC?= =?utf-8?q?ozYcHApZe+jz+67rp3XCVZotldZNuT42g26WKQPWfqBU2vuBhTJkZabw0g8cxnY5g?= =?utf-8?q?n5SdWpKJrfqADXwbrWnV0CK+zKT1rL32iw6Qnr6g2FhlvtH7Jc/dfvQnSycC4j1IG?= =?utf-8?q?2Q8xSwqtvp0sUtVNS1H6SA1KEDZrs6eKGV7wXF98gkO33HUaigNyyd7FfudcN5zjA?= =?utf-8?q?lGtK8hF43IJIgPgqR37F2L3wDShnaJziaiGsk2AhHQyMpBa114ernE+b/05btUAjM?= =?utf-8?q?aL5DbPVb7KhpB4Ojma1pNNJNfvmiXt9t5kLUvVE4DiC9HzwIwHek8o3mcsTu1dL/C?= =?utf-8?q?51JVt37nlzeC/HEaG0VIfBq5aWnfTOLGL4h//nE9NeoXF9qGuWrCd2Ax/Lk6bBs/V?= =?utf-8?q?Wy8Z9P0YSjKVXKtFvQ0n1CYg2sam/d3QbkBuEQqgja4mES+KHOpS3CvViTk2+sAiB?= =?utf-8?q?6QVbiHtpCwiHeaykN9zdIDl6YN9Pi3nHP696eDQ49pN2cv2wVHLf+s07MSQ0qKS6R?= =?utf-8?q?9+C2BC3k8lEkPKVI5n8R+lxjJ32X62p0i2H+SpUOsMesFGGerOSqYs2Jl8RrVQN6O?= =?utf-8?q?9WFItWU31EGQbsfaqa4GdMswK6USdXBzmjbLaR1mKfU6DrpcPVVoP5rBWxtybuKhi?= =?utf-8?q?gEVkiAnGn8hZfE46y2Rc6TlRiFEJNbPxpHF96h/7qPIZI10wXG1jkY9bmrrSOFHO7?= =?utf-8?q?y1xvxEtYu8ZhmvfodB18n/RhYbTyLVMB1tQwxSAczz5HdZyTKVuNMBuv69dnjNAGl?= =?utf-8?q?2r9OwOy8Cog/LEuMD7ETU5EuxmGoreuFH8bT5j2CPPCayq4IBXaC+4I39ZWNkqV5o?= =?utf-8?q?IOa8fo7CtXjCeKt2GGHFgV3UikiFjS5diXLeZVI+YC71ku5uiWt0UfBRHEig+XGNu?= =?utf-8?q?xvTGMehxpzcZfy3cFCI8qs+kFc14ng+qJsqaTVlxrzbkm9TY8aiiNpjFSoBfT2s0/?= =?utf-8?q?A9z6HBBlObq5bkqyNkUe+fCfNyxzuWBfRfXcXmQAIRmOjUbZ9ChI3EnhMF+us+8cP?= =?utf-8?q?MCqZhbsvtsVrADctFnhBH9e5szvkjmB1sn+8KWkq5sO3CWptfADSfQ=3D?= 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:64aa7808-outbound-1.mta.getcheckrecipient.com; CAT:NONE; SFS:(13230040)(36860700013)(376014)(82310400026)(35042699022)(1800799024)(14060799003); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Feb 2025 13:04:55.2131 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 3af0ab8c-d1ae-42c1-0152-08dd44535ac7 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: DB1PEPF000509F5.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR08MB6414 X-Spam-Status: No, score=-11.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FORGED_SPF_HELO, GIT_PATCH_0, KAM_ASCII_DIVIDERS, 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 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces~patchwork=sourceware.org@gcc.gnu.org This changes function version structures to maintain the default version as the first declaration in the linked data structures by giving priority to the set containing the default when constructing the structure. This allows for removing logic for moving the default to the first position which was duplicated across target specific code and enables easier reasoning about function sets when checking for a default. gcc/ChangeLog: * cgraph.cc (cgraph_node::record_function_versions): Update to implicitly keep default first. * config/aarch64/aarch64.cc (aarch64_get_function_versions_dispatcher): Remove reordering. * config/i386/i386-features.cc (ix86_get_function_versions_dispatcher): Remove reordering. * config/riscv/riscv.cc (riscv_get_function_versions_dispatcher): Remove reordering. * config/rs6000/rs6000.cc (rs6000_get_function_versions_dispatcher): Remove reordering. --- gcc/cgraph.cc | 39 +++++++++++++++++++++++------- gcc/config/aarch64/aarch64.cc | 37 +++++++--------------------- gcc/config/i386/i386-features.cc | 33 ++++--------------------- gcc/config/riscv/riscv.cc | 41 +++++++------------------------- gcc/config/rs6000/rs6000.cc | 35 +++++---------------------- 5 files changed, 58 insertions(+), 127 deletions(-) diff --git a/gcc/cgraph.cc b/gcc/cgraph.cc index d0b19ad850e..1ea38d16e56 100644 --- a/gcc/cgraph.cc +++ b/gcc/cgraph.cc @@ -236,37 +236,58 @@ cgraph_node::delete_function_version_by_decl (tree decl) void cgraph_node::record_function_versions (tree decl1, tree decl2) { - cgraph_node *decl1_node = cgraph_node::get_create (decl1); - cgraph_node *decl2_node = cgraph_node::get_create (decl2); + cgraph_node *decl1_node; + cgraph_node *decl2_node; cgraph_function_version_info *decl1_v = NULL; cgraph_function_version_info *decl2_v = NULL; cgraph_function_version_info *before; cgraph_function_version_info *after; + cgraph_function_version_info *temp_node; + + decl1_node = cgraph_node::get_create (decl1); + decl2_node = cgraph_node::get_create (decl2); gcc_assert (decl1_node != NULL && decl2_node != NULL); decl1_v = decl1_node->function_version (); decl2_v = decl2_node->function_version (); - if (decl1_v != NULL && decl2_v != NULL) - return; - if (decl1_v == NULL) decl1_v = decl1_node->insert_new_function_version (); if (decl2_v == NULL) decl2_v = decl2_node->insert_new_function_version (); - /* Chain decl2_v and decl1_v. All semantically identical versions - will be chained together. */ + gcc_assert (decl1_v); + gcc_assert (decl2_v); before = decl1_v; after = decl2_v; + /* Go to first after node. */ + while (after->prev != NULL) + after = after->prev; + + /* Go to first before node. */ + while (before->prev != NULL) + before = before->prev; + + /* These are already recorded as versions. */ + if (before == after) + return; + + /* Possibly swap to make sure the default node stays at the front. */ + if (is_function_default_version (after->this_node->decl)) + { + temp_node = after; + after = before; + before = temp_node; + } + + /* Go to last node of before. */ while (before->next != NULL) before = before->next; - while (after->prev != NULL) - after= after->prev; + /* Chain decl2_v and decl1_v. */ before->next = after; after->prev = before; diff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc index be99137b052..15dd7dda48a 100644 --- a/gcc/config/aarch64/aarch64.cc +++ b/gcc/config/aarch64/aarch64.cc @@ -20630,7 +20630,6 @@ aarch64_get_function_versions_dispatcher (void *decl) struct cgraph_node *node = NULL; struct cgraph_node *default_node = NULL; struct cgraph_function_version_info *node_v = NULL; - struct cgraph_function_version_info *first_v = NULL; tree dispatch_decl = NULL; @@ -20647,37 +20646,17 @@ aarch64_get_function_versions_dispatcher (void *decl) if (node_v->dispatcher_resolver != NULL) return node_v->dispatcher_resolver; - /* Find the default version and make it the first node. */ - first_v = node_v; - /* Go to the beginning of the chain. */ - while (first_v->prev != NULL) - first_v = first_v->prev; - default_version_info = first_v; - while (default_version_info != NULL) - { - if (get_feature_mask_for_version - (default_version_info->this_node->decl) == 0ULL) - break; - default_version_info = default_version_info->next; - } - - /* If there is no default node, just return NULL. */ - if (default_version_info == NULL) - return NULL; - - /* Make default info the first node. */ - if (first_v != default_version_info) - { - default_version_info->prev->next = default_version_info->next; - if (default_version_info->next) - default_version_info->next->prev = default_version_info->prev; - first_v->prev = default_version_info; - default_version_info->next = first_v; - default_version_info->prev = NULL; - } + /* The default node is always the beginning of the chain. */ + default_version_info = node_v; + while (default_version_info->prev != NULL) + default_version_info = default_version_info->prev; default_node = default_version_info->this_node; + /* If there is no default version, just return NULL. */ + if (!is_function_default_version (default_node->decl)) + return NULL; + if (targetm.has_ifunc_p ()) { struct cgraph_function_version_info *it_v = NULL; diff --git a/gcc/config/i386/i386-features.cc b/gcc/config/i386/i386-features.cc index c35ac24fd8a..2eb3a21bb5d 100644 --- a/gcc/config/i386/i386-features.cc +++ b/gcc/config/i386/i386-features.cc @@ -3962,7 +3962,6 @@ ix86_get_function_versions_dispatcher (void *decl) struct cgraph_node *node = NULL; struct cgraph_node *default_node = NULL; struct cgraph_function_version_info *node_v = NULL; - struct cgraph_function_version_info *first_v = NULL; tree dispatch_decl = NULL; @@ -3979,37 +3978,15 @@ ix86_get_function_versions_dispatcher (void *decl) if (node_v->dispatcher_resolver != NULL) return node_v->dispatcher_resolver; - /* Find the default version and make it the first node. */ - first_v = node_v; - /* Go to the beginning of the chain. */ - while (first_v->prev != NULL) - first_v = first_v->prev; - default_version_info = first_v; - while (default_version_info != NULL) - { - if (is_function_default_version - (default_version_info->this_node->decl)) - break; - default_version_info = default_version_info->next; - } + /* The default node is always the beginning of the chain. */ + default_version_info = node_v; + while (default_version_info->prev != NULL) + default_version_info = default_version_info->prev; /* If there is no default node, just return NULL. */ - if (default_version_info == NULL) + if (!is_function_default_version (default_node->decl)) return NULL; - /* Make default info the first node. */ - if (first_v != default_version_info) - { - default_version_info->prev->next = default_version_info->next; - if (default_version_info->next) - default_version_info->next->prev = default_version_info->prev; - first_v->prev = default_version_info; - default_version_info->next = first_v; - default_version_info->prev = NULL; - } - - default_node = default_version_info->this_node; - #if defined (ASM_OUTPUT_TYPE_DIRECTIVE) if (targetm.has_ifunc_p ()) { diff --git a/gcc/config/riscv/riscv.cc b/gcc/config/riscv/riscv.cc index 439cc12f93d..69e47ec7e79 100644 --- a/gcc/config/riscv/riscv.cc +++ b/gcc/config/riscv/riscv.cc @@ -13719,7 +13719,6 @@ riscv_get_function_versions_dispatcher (void *decl) struct cgraph_node *node = NULL; struct cgraph_node *default_node = NULL; struct cgraph_function_version_info *node_v = NULL; - struct cgraph_function_version_info *first_v = NULL; tree dispatch_decl = NULL; @@ -13736,41 +13735,19 @@ riscv_get_function_versions_dispatcher (void *decl) if (node_v->dispatcher_resolver != NULL) return node_v->dispatcher_resolver; - /* Find the default version and make it the first node. */ - first_v = node_v; - /* Go to the beginning of the chain. */ - while (first_v->prev != NULL) - first_v = first_v->prev; - default_version_info = first_v; - - while (default_version_info != NULL) - { - struct riscv_feature_bits res; - int priority; /* Unused. */ - parse_features_for_version (default_version_info->this_node->decl, - res, priority); - if (res.length == 0) - break; - default_version_info = default_version_info->next; - } + /* The default node is always the beginning of the chain. */ + default_version_info = node_v; + while (default_version_info->prev) + default_version_info = default_version_info->prev; + default_node = default_version_info->this_node; /* If there is no default node, just return NULL. */ - if (default_version_info == NULL) + struct riscv_feature_bits res; + int priority; /* Unused. */ + parse_features_for_version (default_node->decl, res, priority); + if (res.length != 0) return NULL; - /* Make default info the first node. */ - if (first_v != default_version_info) - { - default_version_info->prev->next = default_version_info->next; - if (default_version_info->next) - default_version_info->next->prev = default_version_info->prev; - first_v->prev = default_version_info; - default_version_info->next = first_v; - default_version_info->prev = NULL; - } - - default_node = default_version_info->this_node; - if (targetm.has_ifunc_p ()) { struct cgraph_function_version_info *it_v = NULL; diff --git a/gcc/config/rs6000/rs6000.cc b/gcc/config/rs6000/rs6000.cc index 675b039c2b6..c59bd43c76d 100644 --- a/gcc/config/rs6000/rs6000.cc +++ b/gcc/config/rs6000/rs6000.cc @@ -25295,7 +25295,6 @@ rs6000_get_function_versions_dispatcher (void *decl) struct cgraph_node *node = NULL; struct cgraph_node *default_node = NULL; struct cgraph_function_version_info *node_v = NULL; - struct cgraph_function_version_info *first_v = NULL; tree dispatch_decl = NULL; @@ -25315,38 +25314,16 @@ rs6000_get_function_versions_dispatcher (void *decl) if (node_v->dispatcher_resolver != NULL) return node_v->dispatcher_resolver; - /* Find the default version and make it the first node. */ - first_v = node_v; - /* Go to the beginning of the chain. */ - while (first_v->prev != NULL) - first_v = first_v->prev; - - default_version_info = first_v; - while (default_version_info != NULL) - { - const tree decl2 = default_version_info->this_node->decl; - if (is_function_default_version (decl2)) - break; - default_version_info = default_version_info->next; - } + /* The default node is always the beginning of the chain. */ + default_version_info = node_v; + while (default_version_info->prev) + default_version_info = default_version_info->prev; + default_node = default_version_info->this_node; /* If there is no default node, just return NULL. */ - if (default_version_info == NULL) + if (!is_function_default_version (default_node->decl)) return NULL; - /* Make default info the first node. */ - if (first_v != default_version_info) - { - default_version_info->prev->next = default_version_info->next; - if (default_version_info->next) - default_version_info->next->prev = default_version_info->prev; - first_v->prev = default_version_info; - default_version_info->next = first_v; - default_version_info->prev = NULL; - } - - default_node = default_version_info->this_node; - #ifndef TARGET_LIBC_PROVIDES_HWCAP_IN_TCB error_at (DECL_SOURCE_LOCATION (default_node->decl), "% attribute needs GLIBC (2.23 and newer) that "