{"id":2175721,"url":"http://patchwork.ozlabs.org/api/1.0/patches/2175721/?format=json","project":{"id":17,"url":"http://patchwork.ozlabs.org/api/1.0/projects/17/?format=json","name":"GNU Compiler Collection","link_name":"gcc","list_id":"gcc-patches.gcc.gnu.org","list_email":"gcc-patches@gcc.gnu.org","web_url":null,"scm_url":null,"webscm_url":null},"msgid":"<20251218194020.906425-2-alfie.richards@arm.com>","date":"2025-12-18T19:40:19","name":"[v6,1/2] targethooks: Change SAME_FUNCTION_VERSIONS hook to support checking mergeability","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"5c1361edbba3b0cd04f93618d277579dde26820e","submitter":{"id":88864,"url":"http://patchwork.ozlabs.org/api/1.0/people/88864/?format=json","name":"Alfie Richards","email":"alfie.richards@arm.com"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/gcc/patch/20251218194020.906425-2-alfie.richards@arm.com/mbox/","series":[{"id":485906,"url":"http://patchwork.ozlabs.org/api/1.0/series/485906/?format=json","date":"2025-12-18T19:40:18","name":"fmv: aarch64: targethooks: Add priority syntax","version":6,"mbox":"http://patchwork.ozlabs.org/series/485906/mbox/"}],"check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2175721/checks/","tags":{},"headers":{"Return-Path":"<gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org>","X-Original-To":["incoming@patchwork.ozlabs.org","gcc-patches@gcc.gnu.org"],"Delivered-To":["patchwork-incoming@legolas.ozlabs.org","gcc-patches@gcc.gnu.org"],"Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256\n header.s=selector1 header.b=plfopfn3;\n\tdkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com\n header.a=rsa-sha256 header.s=selector1 header.b=plfopfn3;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=38.145.34.32; helo=vm01.sourceware.org;\n envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)","sourceware.org;\n\tdkim=pass (1024-bit key,\n unprotected) header.d=arm.com header.i=@arm.com header.a=rsa-sha256\n header.s=selector1 header.b=plfopfn3;\n\tdkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com\n header.a=rsa-sha256 header.s=selector1 header.b=plfopfn3","sourceware.org;\n dmarc=pass (p=none dis=none) header.from=arm.com","sourceware.org; spf=pass smtp.mailfrom=arm.com","server2.sourceware.org;\n arc=pass smtp.remote-ip=52.101.66.45"],"Received":["from vm01.sourceware.org (vm01.sourceware.org [38.145.34.32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4dXLfq6Tt8z1y3t\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 19 Dec 2025 06:42:43 +1100 (AEDT)","from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id A07664BA2E32\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 18 Dec 2025 19:42:41 +0000 (GMT)","from DUZPR83CU001.outbound.protection.outlook.com\n (mail-northeuropeazon11012045.outbound.protection.outlook.com [52.101.66.45])\n by sourceware.org (Postfix) with ESMTPS id D03B74BA2E1C\n for <gcc-patches@gcc.gnu.org>; Thu, 18 Dec 2025 19:41:33 +0000 (GMT)","from AM8P191CA0022.EURP191.PROD.OUTLOOK.COM (2603:10a6:20b:21a::27)\n by DU0PR08MB8663.eurprd08.prod.outlook.com (2603:10a6:10:401::6) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9434.6; Thu, 18 Dec\n 2025 19:41:28 +0000","from AM4PEPF00027A5E.eurprd04.prod.outlook.com\n (2603:10a6:20b:21a:cafe::d0) by AM8P191CA0022.outlook.office365.com\n (2603:10a6:20b:21a::27) with Microsoft SMTP Server (version=TLS1_3,\n cipher=TLS_AES_256_GCM_SHA384) id 15.20.9434.6 via Frontend Transport; Thu,\n 18 Dec 2025 19:41:27 +0000","from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by\n AM4PEPF00027A5E.mail.protection.outlook.com (10.167.16.72) with Microsoft\n SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9434.6\n via Frontend Transport; Thu, 18 Dec 2025 19:41:28 +0000","from AM6P193CA0052.EURP193.PROD.OUTLOOK.COM (2603:10a6:209:8e::29)\n by AM8PR08MB5746.eurprd08.prod.outlook.com (2603:10a6:20b:1d8::20) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9434.7; Thu, 18 Dec\n 2025 19:40:21 +0000","from AMS0EPF000001AA.eurprd05.prod.outlook.com\n (2603:10a6:209:8e:cafe::cb) by AM6P193CA0052.outlook.office365.com\n (2603:10a6:209:8e::29) with Microsoft SMTP Server (version=TLS1_3,\n cipher=TLS_AES_256_GCM_SHA384) id 15.20.9434.7 via Frontend Transport; Thu,\n 18 Dec 2025 19:40:20 +0000","from nebula.arm.com (172.205.89.229) by\n AMS0EPF000001AA.mail.protection.outlook.com (10.167.16.150) with Microsoft\n SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.20.9434.6 via Frontend Transport; Thu, 18 Dec 2025 19:40:21 +0000","from AZ-NEU-EX04.Arm.com (10.240.25.138) by AZ-NEU-EX04.Arm.com\n (10.240.25.138) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.29; Thu, 18 Dec\n 2025 19:40:21 +0000","from ip-10-249-56-165.eu-west-1.compute.internal (10.249.56.165) by\n mail.arm.com (10.240.25.138) with Microsoft SMTP Server id\n 15.2.2562.29 via Frontend Transport; Thu, 18 Dec 2025 19:40:21 +0000"],"DKIM-Filter":["OpenDKIM Filter v2.11.0 sourceware.org A07664BA2E32","OpenDKIM Filter v2.11.0 sourceware.org D03B74BA2E1C"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org D03B74BA2E1C","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org D03B74BA2E1C","ARC-Seal":["i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1766086894; cv=pass;\n b=Af+zgykT1FC/cKZynQPxmIg9LNsBuC/f/pBkJuvOK8ovVeV4pFtuNe7A+fn3U1cOdspvPlFvKo8Oz7AA8QCVqltBLo6mJGJkfFClju0MniQdlCp6WQ3J7GWwKRuxGPOUcmyIq+5O3tYC5ynUt8GfHNcFZHPdYJUR5OArB+g0gSc=","i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;\n b=wlpWh/n3RBY3/Jq6rvYbdambslYZc3AcAMzCa80hoej8y4jgt4brTngaETla76WkU1Cn/P0ouSNqAOWcysFlq8fFDfKnnE9dlO4ZCg2oYoFtqeKfgULoeZ5ZsBxNc/IIdubmCFzHzFm7XZ30bY6rAKhPEvllnjFrnnSkIafJwTPrXkZ+L65D6tAFql6s9QqRFBDaAGEolCXHPdI6WGqq6Et6iB5zkmZl53EyhZOPuP3eP1+R+U/FSBhd5Bf2NaVZ07+5rbWFmFTj+qXNdx0c9mxymFqb5qAaqMpP07SlyQc74nFg7xXGOXcp5tPIpEr9qPhw6W4tU5DGI38k3FSVSg==","i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=Tp7OhN7qIBMgk/jD5KbP4cmAL7C7vpVrWonY4poo9HshhQr26OXJcOAf9HxgdjiJ5xG3UmMG1nvpjQLWyiJ3gW7M73/CAN0BpvL6rVcdT2JqumD+a7Gr0nPH18eTtsnr/z3NpVwiVHfOwtx3ytx8KUJQqu9jpRE0d53K3SIvOjmJQhTijbgA3zswbzc4ZopKFwcVhtkG3PPrew20fE8c/4pBbuvafA5y5cp1L6jKVcpLmCZcS948EydHphp+0bZq6OlQi+0YfE3zSgXHd2/sq7N1uaAC9PMPoLNh5DkZNWzWm5Lf+9Hloifp1LHDtcJdOhjefMVAyrj2SSShvkeL/A=="],"ARC-Message-Signature":["i=3; a=rsa-sha256; d=sourceware.org; s=key;\n t=1766086894; c=relaxed/simple;\n bh=a/a84HxLaNThl+vob9lIV/ghkaXEzNk+3uG6Ec6Gt6Y=;\n h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID:\n MIME-Version;\n b=wTarFNWmk/AwZoP09KCH2qOva58T4JGnG8IYXibGqh8vThCHXG/yMUvl41tHvSoGScXF0AlyMgTqd68X00YrTuxjrUrJKaTdN5tov9roAnQ0NjXONuGo7AfFGsfeG7OG8aoTNttD5bb9hGc+CNkbfDUT61Jv/b0Bg7xz5XRH1GE=","i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n 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;\n bh=Az0+DZeW7v+9tPOYFa7qZsjFUJ1XS2sb7TQ7RdkEiQc=;\n b=uwDJiBCMygTGKYyHA7aWtgE0ebj4ghAUfDMgG3CvQfFiVQO0K7cEYuRgFz4omh9QGdH7gNDXbUdgtuNNh3Sa+o+Xf+6ia9DyWk90G34FVLENp6NXIjOBQyjQDSRp+Pz694VUe0hXSwTnub1PdGBzebvI+7RmlDfNFhek2n47F1sNxezX+JZHW1Usy+e9wFQaMQSS7FQNgvCGHDsbFUr7crjJnX91R1B+QD0otRH3v5BH+EXy4k1cCjEkQ/eg9j8K0CdjTyO2k9jg99lqA1MeflzSHKFycZumi6s4sWNVyWk0FTaKndnJBO9TmMeDfdPJDtlxtTT3rwjgHAPZpHrhnQ==","i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n 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;\n bh=Az0+DZeW7v+9tPOYFa7qZsjFUJ1XS2sb7TQ7RdkEiQc=;\n b=QqlnkscNvAPwxNuriPWiRs332dKVybpgpstaZRdVuSJ4WoB1GhJpc9MxAoPv2x6Z0wayOhbSU4/Ym+9imyFMDvpvDvVU4K5EdXNxsnlGuc8dus7RAZ2le3x6kCXjlPCBENCM1sKTgsaDw11AMDM1WnHvx8a7TiEoaCoHEvAw7mMcBC14bgA/X68rwwPKUYsGe9Ct22TXjYHNeDnJMfusMRs0oqPd8UqSuQaqry+k6Hkfdi1e7ly3Yq2tEkMJenZ7zoLKrRaftnqiZFrp7Jdy8NkBhqfX+ioL94sFbhkt/5oqjNGt3hdE0h5J0pY+Bi2l7jmyDH3wLhEKcXHlHLyEaQ=="],"ARC-Authentication-Results":["i=3; server2.sourceware.org","i=2; mx.microsoft.com 1; spf=pass (sender ip is\n 4.158.2.129) smtp.rcpttodomain=gcc.gnu.org smtp.mailfrom=arm.com; dmarc=pass\n (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass\n (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1\n spf=[1,1,smtp.mailfrom=arm.com] dmarc=[1,1,header.from=arm.com])","i=1; mx.microsoft.com 1; spf=pass (sender ip is\n 172.205.89.229) smtp.rcpttodomain=gcc.gnu.org smtp.mailfrom=arm.com;\n dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com;\n dkim=none (message not signed); arc=none (0)"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=Az0+DZeW7v+9tPOYFa7qZsjFUJ1XS2sb7TQ7RdkEiQc=;\n b=plfopfn39tz89cw3qT1Q4ubzfre1edTdLEHYHn23KMQ5LZhPrGHnTXhiauSlejyjiMSHV9kzigVx9ObZblMz30q9sUoGllo2vSJTzINB6NIWpG0A9IWDxwCZRYwxD9mXq7ZeEG4ZwYx71Yx5HlPMm5ytNNpVWYXbXNkLCSbQpgw=","v=1; a=rsa-sha256; c=relaxed/relaxed; d=arm.com; s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=Az0+DZeW7v+9tPOYFa7qZsjFUJ1XS2sb7TQ7RdkEiQc=;\n b=plfopfn39tz89cw3qT1Q4ubzfre1edTdLEHYHn23KMQ5LZhPrGHnTXhiauSlejyjiMSHV9kzigVx9ObZblMz30q9sUoGllo2vSJTzINB6NIWpG0A9IWDxwCZRYwxD9mXq7ZeEG4ZwYx71Yx5HlPMm5ytNNpVWYXbXNkLCSbQpgw="],"X-MS-Exchange-Authentication-Results":["spf=pass (sender IP is 4.158.2.129)\n smtp.mailfrom=arm.com; dkim=pass (signature was verified)\n header.d=arm.com;dmarc=pass action=none header.from=arm.com;","spf=pass (sender IP is 172.205.89.229)\n smtp.mailfrom=arm.com; dkim=none (message not signed)\n header.d=none;dmarc=pass action=none header.from=arm.com;"],"Received-SPF":["Pass (protection.outlook.com: domain of arm.com designates\n 4.158.2.129 as permitted sender) receiver=protection.outlook.com;\n client-ip=4.158.2.129; helo=outbound-uk1.az.dlp.m.darktrace.com; pr=C","Pass (protection.outlook.com: domain of arm.com designates\n 172.205.89.229 as permitted sender) receiver=protection.outlook.com;\n client-ip=172.205.89.229; helo=nebula.arm.com; pr=C"],"From":"Alfie Richards <alfie.richards@arm.com>","To":"<gcc-patches@gcc.gnu.org>","CC":"<jlaw@ventanamicro.com>, <alice.carlotti@arm.com>,\n <andrew.pinski@oss.qualcomm.com>, <wilco.dijkstra@arm.com>,\n <richard.earnshaw@arm.com>, Alfie Richards <alfie.richards@arm.com>","Subject":"[PATCH v6 1/2] targethooks: Change SAME_FUNCTION_VERSIONS hook to\n support checking mergeability","Date":"Thu, 18 Dec 2025 19:40:19 +0000","Message-ID":"<20251218194020.906425-2-alfie.richards@arm.com>","X-Mailer":"git-send-email 2.34.1","In-Reply-To":"<20251218194020.906425-1-alfie.richards@arm.com>","References":"<20251218194020.906425-1-alfie.richards@arm.com>","MIME-Version":"1.0","Content-Transfer-Encoding":"8bit","Content-Type":"text/plain","X-EOPAttributedMessage":"1","X-MS-TrafficTypeDiagnostic":"\n AMS0EPF000001AA:EE_|AM8PR08MB5746:EE_|AM4PEPF00027A5E:EE_|DU0PR08MB8663:EE_","X-MS-Office365-Filtering-Correlation-Id":"9c354211-9cad-4b69-3d9f-08de3e6d6fe5","x-checkrecipientrouted":"true","NoDisclaimer":"true","X-MS-Exchange-SenderADCheck":"1","X-MS-Exchange-AntiSpam-Relay":"0","X-Microsoft-Antispam-Untrusted":"BCL:0;\n ARA:13230040|82310400026|376014|36860700013|1800799024|3122999012;","X-Microsoft-Antispam-Message-Info-Original":"\n QnY3xNJ7wLRB7z2sSbew8Lk9swtb3tvh4sahc/X5KlgFN2aP9wwclgRfR5LBvEnPBz+U73teLhQWe5VTJV98I2UgMq0rEOuhO9xo1BF2ZkmdPhYhvXRYJkidtENbAFaOZn93FiF6vjjoAnsOC5aDT5vA9GCr83jFXDk3SfF03IbINrfr/kAYUOYqbZqx+ILlFkHGBDfp1wFw/0g6o4KAFN1LFB2+UDVzPMqEdP6Pjd9uWsjj51vf0ABEg1Bqe6TtPFroBjBH7yV9Uyd2wkWGgqJk5nGUt0R0t9GRjCLv5JSTPXp7KoyC7Ti6C6UIvX3ax/F6mNUB/ND/qLM0U8rxQfX4unLfn6VhqdwoQ6KVgvO1g3YrQECG+3XjEKZn9R+B+pM1Vp8J9BY8uaX/5+nDi3PjLqtYSqsXKaCUjTeZo70QaqEU6LxVq0Z2q1x/TOhBsCiVRi8UjUACmPAvncGGFl2y44pgF1KJC0s01Ti/bn+WrY0dKL601v2ntW+tRSxiBfkt4v0nRat96OCoCg5+dh3Yst0DO56zCAC25FEJUaqKjEEU57FPZun5Bq054Ji+DiLCjqZt1Plm5nS1nnocPYgHydUD14ckdeLM3VuYOG3XA2HvPcZN4MfOx/7YXcH1j2pvDfZswtLmiIDLaIJnlGaanqfWbFRBy8Md7pR6x+42LUo1sau4ncLEIVDt0Qqv2wTSy0H8RD/rWBVoTADZNBAsw1K9YgNNTVAN56v5dgMQJwK/r5O0qD/6+casvsFZAthpMWvm1RdYn11CbBzOAGquP88jJBMF6M9Z0KeHwbQVHxdATXheIhDEoxEpYlA3cCGW4UJT77RQp4D76duqQfmNVKgb7J6ugtPh4FIEhNQ/1P4/Qb3Ipe5o7wOGWN6KmBhlDVHW5Z1u0pxw4TpfzSt7oxBUDmVYrQqq+MhL2MapPoiDfSeyOiTuXabMPcdGV+A4FR3HnHfm9xo8aiyWIq9tIifDuCHF+Ahcz2//Ao2CtNHlbckBwXpZ7dE9NsT8iQEaNWeZEuY6OC/4dV4KHB6U6+PapjdSCFOc5FANqmpJen+U+Qw8OzQbUwg8BUjOJ7K82qKHlRi2W3pOyTql+ELPQIj37U1p415uUQs8z5RORhnMFOACZyGbfq/xu29oNfPhUJIfhrLSnhj9w+iyaz+4O390sa/5p5wqJy+m4enyOoaQDKuy84R7NGQFXaXNOvcCe+Sls1BdHEST1xijq3UESWlDqSutR2L+Cl2s4+MFTBTZU9mMZoKBJRtYvlWqD+JRNRpPsPOxHN48JmxU0WEBcXf7As843Uc7HmokkGMBq6HIUOJUcmBsc+PttFpdNkP3zLLYdoKmagZGjMN/ED5nFCMwIjXqp0VmdyKqn2vSYesqDCWebKbPeybUigJUIiwo5uXf1qbGMCJgPnVDH3uA8EBFhIq4rW+KIxAV9KCX+OttPnP2vpp14YP/ycxWSG5oBpB0RPF/IxRgR47lyM5NgD9ZVVgVn06JNTPUtiHMwoWoHsMylGxV/vn54UqR4UaZBoE5NcCBd5UoDZl0Sfo/X2jt7vGrYYj9WomKI/0=","X-Forefront-Antispam-Report-Untrusted":"CIP:172.205.89.229; CTRY:IE; LANG:en;\n SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:nebula.arm.com; PTR:InfoDomainNonexistent;\n CAT:NONE;\n SFS:(13230040)(82310400026)(376014)(36860700013)(1800799024)(3122999012);\n DIR:OUT; SFP:1101;","X-MS-Exchange-Transport-CrossTenantHeadersStamped":["AM8PR08MB5746","DU0PR08MB8663"],"X-MS-Exchange-Transport-CrossTenantHeadersStripped":"\n AM4PEPF00027A5E.eurprd04.prod.outlook.com","X-MS-PublicTrafficType":"Email","X-MS-Office365-Filtering-Correlation-Id-Prvs":"\n e90689d6-3222-48a2-250f-08de3e6d4855","X-Microsoft-Antispam":"BCL:0;\n ARA:13230040|376014|82310400026|36860700013|35042699022|14060799003|1800799024|3122999012;","X-Microsoft-Antispam-Message-Info":"\n ZQHEXq/2TOPTQJljrege8AdL5ToT0ewMR/a7wJR0KHXID7Rwo4hauT6Jvd2KOfB22W3cI7YY570OHCACuOClEf8NTYpDZ/4uXHz1+UtzL6SDVpQ0Z6OHoZtMfcowW3WA8c99Pqj/pUDn0a398U+qA9zC7ERXoBOyB9M4vuVKl4ADLb0TVRgr7cKIRTXjw1BIISPqMzup/ZGCqrQP3FF8zBCOqC6Fps51xmmN6EB+uzANtceTIFq+yY9T0zQtwcQwcDqmeJcjff3ik6vzuzYh0W5M1ZouzdpV6RWuiYfWRoJwqifCJPW9D/cns+fchYdNgwBuC2RBTdGBcUCux5eGPGO/HtTi3DtG7R9GogDNwiqyf3v2BFagYZnXbqXWKkYafM0Vv4JGik/fvGSBo9DJK+4rebbjtsC9IIjDmDsJ520IWRAe3R1YF3+Dm+39+1u+9WuMVwH08vrcsZ2a0+A6Q9HOUBxKd1XYz5XUh9W0GPi4ZfNafxhd8LVsuvgk7UfHoQWXv2kKgraiO0MYMSp88B4sMvud9orPgjqE8cUwYwfEBnlFpRmNffX20bml4JWn0vucv6hut3eXS6YFAs5uS+awvBb8GolwF1i7nRzCTMVfzkhyoU7bWL5ajyGJyWm+FWa8vguvg50qtBE8+IG9qds+yiMtsxd0JvPE/m0us3R/Z3qo4h9ZABh+BHnvUsV4d7hTBzkL2wx0asPm7J2ZqvfF34INOJ5/bpQC2zOX2lqgzPuD4WK53pF0JpkNC2eQ74e0Nr0Mkb+1r+QF1Qexd5qhHu9/A9JiQ/lMuPikVdgIKp6/tNEtnjz4Jb5Mw8G+kUzgpgi0CtsmLCIPG1idudJUh16Kup8YuywmzuvnBOy1F/nz4mXAQLC9bfhqHhufSb9vqFHoNzMLaM91Ksvh4Pwxe4zK41md+m8uxwz/rwdLD1ozsCHd7CT2rnmhLxxKhz/hWKTMKEJOZ2RZcZEWm4NQ9Z1Mn1b3ccbNC8KiP5A/hYBXP28QDr5SmXZgh3yzIUR5UtUZeBVc7K25OoCgUZn4M+avuoFXJCUbq/8vVZVySAuDeyr4LkTjMu2sYHHllMykiep8N5E6dei0/pptfozV0xm50oQqEk8soNkwBnXOlw8UewSDw2mwe0aJ0MP0OkeCR3mcdiexRTRuRK8hoC7OZcej2NQvEHM4bPzoOE6iwy3xIj/JpujLAvFGstUpULcHh/MBRhjDxZ4wM9IWiAeOYEyoK+w/J5XQHJLOM0AGSjiC10wW6EsbvMcYrnCkxPhJo0/VTFoHuKVkrKXOCqyJUCxnJ6Nj+TnhN254H91atvlkeS3AtQdrqkw6rwI3Gx6rpWcKHzol2OtXA7wP8DR/HgT43jhxCgCxNmEB+4fJxMJU1a/5yA1wAYgXVchG0tQGPE75Hv2Qc9lNT9IzQNxT2qIb68NbgcQDrWU/7uD9/rb8a7n17bVF0J3EV4v8RvEC09SqSvh5Xbgy4YMFQ2OsSpfpi1pTspEvUHiERl9NDx7JCdn5qHvo4iKMVcm7EpoFXVdiN22XuZb5tfIWt3qewi8LjBRyxA9BziBokPM=","X-Forefront-Antispam-Report":"CIP:4.158.2.129; CTRY:GB; LANG:en; SCL:1; SRV:;\n IPV:NLI; SFV:NSPM; H:outbound-uk1.az.dlp.m.darktrace.com;\n PTR:InfoDomainNonexistent; CAT:NONE;\n SFS:(13230040)(376014)(82310400026)(36860700013)(35042699022)(14060799003)(1800799024)(3122999012);\n DIR:OUT; SFP:1101;","X-OriginatorOrg":"arm.com","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"18 Dec 2025 19:41:28.1742 (UTC)","X-MS-Exchange-CrossTenant-Network-Message-Id":"\n 9c354211-9cad-4b69-3d9f-08de3e6d6fe5","X-MS-Exchange-CrossTenant-Id":"f34e5979-57d9-4aaa-ad4d-b122a662184d","X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp":"\n TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[4.158.2.129];\n Helo=[outbound-uk1.az.dlp.m.darktrace.com]","X-MS-Exchange-CrossTenant-AuthSource":"\n AM4PEPF00027A5E.eurprd04.prod.outlook.com","X-MS-Exchange-CrossTenant-AuthAs":"Anonymous","X-MS-Exchange-CrossTenant-FromEntityHeader":"HybridOnPrem","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>,\n <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>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe>","Errors-To":"gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org"},"content":"This changes the hook to support checking version mergeability for cases\nwhere the version strings do imply the same version, but are conflicting\nin some other way so cannot be merged.\n\nThis is a change required for adding priority version support in aarch64.\n\ngcc/ChangeLog:\n\n\t* target.def (TARGET_OPTION_SAME_FUNCTION_VERSIONS): Update\n\tdocumentation.\n\t* tree.cc (disjoint_version_decls): Change for new NULL parameter\n\tto same_function_versions.\n\t(diagnose_versioned_decls): Update to pass diagnostic location to\n\tsame_function_versions.\n\t* doc/tm.texi: Regenerate.\n\t* config/aarch64/aarch64.cc (aarch64_same_function_versions):\n\tUpdate hook impl for new arguments.\n\t* config/riscv/riscv.cc (riscv_same_function_versions): Update\n\thook impl for new arguments.\n\t* config/loongarch/loongarch.cc\n\t(loongarch_same_function_versions): Likewise\n\t* hooks.cc (hook_stringslice_stringslice_unreachable): Changed\n\tto...\n\t(hook_stringslice_consttree_stringslice_consttree_unreachable):\n\t...this and add extra arguments.\n\t* hooks.h (hook_stringslice_stringslice_unreachable): Changed\n\tto...\n\t(hook_stringslice_consttree_stringslice_consttree_unreachable):\n\tand add extra arguments.\n---\n gcc/config/aarch64/aarch64.cc     | 19 +++++++++--------\n gcc/config/loongarch/loongarch.cc |  3 ++-\n gcc/config/riscv/riscv.cc         |  3 ++-\n gcc/doc/tm.texi                   |  8 +++++++-\n gcc/hooks.cc                      |  5 ++++-\n gcc/hooks.h                       |  2 +-\n gcc/target.def                    | 18 +++++++++++-----\n gcc/tree.cc                       | 34 +++++++++++++++++--------------\n 8 files changed, 59 insertions(+), 33 deletions(-)","diff":"diff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc\nindex 8b7253b11fe..7baf041ceb3 100644\n--- a/gcc/config/aarch64/aarch64.cc\n+++ b/gcc/config/aarch64/aarch64.cc\n@@ -21499,19 +21499,22 @@ aarch64_get_function_versions_dispatcher (void *decl)\n    function.  */\n \n bool\n-aarch64_same_function_versions (string_slice str1, string_slice str2)\n+aarch64_same_function_versions (string_slice old_str, const_tree,\n+\t\t\t\tstring_slice new_str, const_tree)\n {\n   enum aarch_parse_opt_result parse_res;\n-  aarch64_fmv_feature_mask feature_mask1;\n-  aarch64_fmv_feature_mask feature_mask2;\n-  parse_res = aarch64_parse_fmv_features (str1, NULL,\n-\t\t\t\t\t  &feature_mask1, NULL);\n+  aarch64_fmv_feature_mask old_feature_mask;\n+  aarch64_fmv_feature_mask new_feature_mask;\n+\n+  parse_res = aarch64_parse_fmv_features (old_str, NULL, &old_feature_mask,\n+\t\t\t\t\t  NULL);\n   gcc_assert (parse_res == AARCH_PARSE_OK);\n-  parse_res = aarch64_parse_fmv_features (str2, NULL,\n-\t\t\t\t\t  &feature_mask2, NULL);\n+\n+  parse_res = aarch64_parse_fmv_features (new_str, NULL, &new_feature_mask,\n+\t\t\t\t\t  NULL);\n   gcc_assert (parse_res == AARCH_PARSE_OK);\n \n-  return feature_mask1 == feature_mask2;\n+  return old_feature_mask == new_feature_mask;\n }\n \n /* Implement TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P.  Use an opt-out\ndiff --git a/gcc/config/loongarch/loongarch.cc b/gcc/config/loongarch/loongarch.cc\nindex 0b50aa214fd..f5fa9ead2be 100644\n--- a/gcc/config/loongarch/loongarch.cc\n+++ b/gcc/config/loongarch/loongarch.cc\n@@ -12165,7 +12165,8 @@ loongarch_generate_version_dispatcher_body (void *node_p)\n    This assumes that FN1 and FN2 have the same signature.  */\n \n bool\n-loongarch_option_same_function_versions (string_slice str1, string_slice str2)\n+loongarch_option_same_function_versions (string_slice str1, const_tree,\n+\t\t\t\t\t string_slice str2, const_tree)\n {\n   loongarch_fmv_feature_mask feature_mask1;\n   loongarch_fmv_feature_mask feature_mask2;\ndiff --git a/gcc/config/riscv/riscv.cc b/gcc/config/riscv/riscv.cc\nindex 96519c96a2b..3a0449e2ca8 100644\n--- a/gcc/config/riscv/riscv.cc\n+++ b/gcc/config/riscv/riscv.cc\n@@ -14823,7 +14823,8 @@ compare_fmv_features (const struct riscv_feature_bits &mask1,\n    version.  */\n \n bool\n-riscv_same_function_versions (string_slice v1, string_slice v2)\n+riscv_same_function_versions (string_slice v1, const_tree, string_slice v2,\n+\t\t\t      const_tree)\n {\n   struct riscv_feature_bits mask1, mask2;\n   int prio1, prio2;\ndiff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi\nindex 2ddb11846ee..ce7ad16100d 100644\n--- a/gcc/doc/tm.texi\n+++ b/gcc/doc/tm.texi\n@@ -11012,9 +11012,15 @@ changed via the optimize attribute or pragma, see\n @code{TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE}\n @end deftypefn\n \n-@deftypefn {Target Hook} bool TARGET_OPTION_SAME_FUNCTION_VERSIONS (string_slice @var{fn1}, string_slice @var{fn2})\n+@deftypefn {Target Hook} bool TARGET_OPTION_SAME_FUNCTION_VERSIONS (string_slice @var{fn1}, const_tree @var{decl1}, string_slice @var{fn2}, const_tree @var{decl2})\n This target hook returns @code{true} if the target/target-version strings\n @var{fn1} and @var{fn2} imply the same function version.\n+\n+If @var{decl1} and @var{decl2} are non @code{NULL} then @var{fn1} and\n+@var{fn2} are from an earlier and a later declaration respectively, and the\n+hook diagnoses any version string incompatibility for these decls.\n+If the version strings are incompatible and the declarations can not be\n+merged, then hook emits an error.\n @end deftypefn\n \n @deftypefn {Target Hook} bool TARGET_OPTION_FUNCTIONS_B_RESOLVABLE_FROM_A (tree @var{decl_a}, tree @var{decl_v}, tree @var{base})\ndiff --git a/gcc/hooks.cc b/gcc/hooks.cc\nindex 5321142495b..06aebd3daaa 100644\n--- a/gcc/hooks.cc\n+++ b/gcc/hooks.cc\n@@ -595,7 +595,10 @@ hook_stringslice_locationtptr_true (string_slice, location_t *)\n }\n \n bool\n-hook_stringslice_stringslice_unreachable (string_slice, string_slice)\n+hook_stringslice_consttree_stringslice_consttree_unreachable (string_slice,\n+\t\t\t\t\t\t\t      const_tree,\n+\t\t\t\t\t\t\t      string_slice,\n+\t\t\t\t\t\t\t      const_tree)\n {\n   gcc_unreachable ();\n }\ndiff --git a/gcc/hooks.h b/gcc/hooks.h\nindex a7021f532a5..1d8630c8349 100644\n--- a/gcc/hooks.h\n+++ b/gcc/hooks.h\n@@ -139,6 +139,6 @@ extern opt_machine_mode hook_optmode_mode_uhwi_none (machine_mode,\n \t\t\t\t\t\t     unsigned HOST_WIDE_INT);\n \n extern bool hook_stringslice_locationtptr_true (string_slice, location_t *);\n-extern bool hook_stringslice_stringslice_unreachable (string_slice, string_slice);\n+extern bool hook_stringslice_consttree_stringslice_consttree_unreachable (string_slice, const_tree, string_slice, const_tree);\n \n #endif\ndiff --git a/gcc/target.def b/gcc/target.def\nindex d695f38fbcc..b994ccef215 100644\n--- a/gcc/target.def\n+++ b/gcc/target.def\n@@ -6971,14 +6971,22 @@ changed via the optimize attribute or pragma, see\\n\\\n  void, (void),\n  hook_void_void)\n \n-/* This function returns true if FN1 and FN2 define the same version of a\n-   function.  */\n+/* This function returns true if FN1 and FN2 define the same version\n+   of a function.\n+   If DECL1 and DECL2 is not-null then emit a diagnostic if the versions do\n+   imply the same version, but are not mergeable.  */\n DEFHOOK\n (same_function_versions,\n  \"This target hook returns @code{true} if the target/target-version strings\\n\\\n-@var{fn1} and @var{fn2} imply the same function version.\",\n- bool, (string_slice fn1, string_slice fn2),\n- hook_stringslice_stringslice_unreachable)\n+@var{fn1} and @var{fn2} imply the same function version.\\n\\\n+\\n\\\n+If @var{decl1} and @var{decl2} are non @code{NULL} then @var{fn1} and\\n\\\n+@var{fn2} are from an earlier and a later declaration respectively, and the\\n\\\n+hook diagnoses any version string incompatibility for these decls.\\n\\\n+If the version strings are incompatible and the declarations can not be\\n\\\n+merged, then hook emits an error.\",\n+ bool, (string_slice fn1, const_tree decl1, string_slice fn2, const_tree decl2),\n+ hook_stringslice_consttree_stringslice_consttree_unreachable)\n \n /* Checks if we can be certain that function DECL_A could resolve DECL_B.  */\n DEFHOOK\ndiff --git a/gcc/tree.cc b/gcc/tree.cc\nindex 8dcb59dc875..69f44846b7f 100644\n--- a/gcc/tree.cc\n+++ b/gcc/tree.cc\n@@ -15610,7 +15610,8 @@ disjoint_version_decls (tree fn1, tree fn2)\n \t      for (string_slice v1 : fn1_versions)\n \t\t{\n \t\t  for (string_slice v2 : fn2_versions)\n-\t\t    if (targetm.target_option.same_function_versions (v1, v2))\n+\t\t    if (targetm.target_option.same_function_versions (v1, NULL,\n+\t\t\t\t\t\t\t\t      v2, NULL))\n \t\t      return false;\n \t\t}\n \t      return true;\n@@ -15628,7 +15629,8 @@ disjoint_version_decls (tree fn1, tree fn2)\n \t      if (!v2.is_valid ())\n \t\tv2 = \"default\";\n \t      for (string_slice v1 : fn1_versions)\n-\t\tif (targetm.target_option.same_function_versions (v1, v2))\n+\t\tif (targetm.target_option.same_function_versions (v1, NULL, v2,\n+\t\t\t\t\t\t\t\t  NULL))\n \t\t  return false;\n \t      return true;\n \t    }\n@@ -15647,7 +15649,7 @@ disjoint_version_decls (tree fn1, tree fn2)\n \t  if (!v2.is_valid ())\n \t    v2 = \"default\";\n \n-\t  if (targetm.target_option.same_function_versions (v1, v2))\n+\t  if (targetm.target_option.same_function_versions (v1, NULL, v2, NULL))\n \t    return false;\n \n \t  return true;\n@@ -15695,30 +15697,32 @@ diagnose_versioned_decls (tree old_decl, tree new_decl)\n      the two sets of target_clones imply the same set of versions.  */\n   if (old_target_clones_attr && new_target_clones_attr)\n     {\n-      auto_vec<string_slice> fn1_versions = get_clone_versions (old_decl);\n-      auto_vec<string_slice> fn2_versions = get_clone_versions (new_decl);\n+      auto_vec<string_slice> old_versions = get_clone_versions (old_decl);\n+      auto_vec<string_slice> new_versions = get_clone_versions (new_decl);\n \n       bool mergeable = true;\n \n-      if (fn1_versions.length () != fn2_versions.length ())\n+      if (old_versions.length () != new_versions.length ())\n \tmergeable = false;\n \n       /* Check both inclusion directions.  */\n-      for (auto fn1v : fn1_versions)\n+      for (auto oldv: old_versions)\n \t{\n \t  bool matched = false;\n-\t  for (auto fn2v : fn2_versions)\n-\t    if (targetm.target_option.same_function_versions (fn1v, fn2v))\n+\t  for (auto newv: new_versions)\n+\t    if (targetm.target_option.same_function_versions (oldv, old_decl,\n+\t\t\t\t\t\t\t      newv, new_decl))\n \t      matched = true;\n \t  if (!matched)\n \t    mergeable = false;\n \t}\n \n-      for (auto fn2v : fn2_versions)\n+      for (auto newv: new_versions)\n \t{\n \t  bool matched = false;\n-\t  for (auto fn1v : fn1_versions)\n-\t    if (targetm.target_option.same_function_versions (fn1v, fn2v))\n+\t  for (auto oldv: old_versions)\n+\t    if (targetm.target_option.same_function_versions (oldv, old_decl,\n+\t\t\t\t\t\t\t      newv, new_decl))\n \t      matched = true;\n \t  if (!matched)\n \t    mergeable = false;\n@@ -15767,9 +15771,9 @@ diagnose_versioned_decls (tree old_decl, tree new_decl)\n       return true;\n     }\n \n-  /* The only remaining case is two target_version annotated decls.  Must\n-     be mergeable as otherwise are distinct.  */\n-  return false;\n+  /* The only remaining case is two target_version annotated decls.  */\n+  return !targetm.target_option.same_function_versions\n+\t    (old_target_attr, old_decl, new_target_attr, new_decl);\n }\n \n void\n","prefixes":["v6","1/2"]}