get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/1.0/patches/2175721/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 2175721,
    "url": "http://patchwork.ozlabs.org/api/1.0/patches/2175721/?format=api",
    "project": {
        "id": 17,
        "url": "http://patchwork.ozlabs.org/api/1.0/projects/17/?format=api",
        "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=api",
        "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=api",
            "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"
    ]
}