get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 2221972,
    "url": "http://patchwork.ozlabs.org/api/patches/2221972/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/gcc/patch/PAWPR08MB8982692EB1AF594BBC0230C483592@PAWPR08MB8982.eurprd08.prod.outlook.com/",
    "project": {
        "id": 17,
        "url": "http://patchwork.ozlabs.org/api/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,
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<PAWPR08MB8982692EB1AF594BBC0230C483592@PAWPR08MB8982.eurprd08.prod.outlook.com>",
    "list_archive_url": null,
    "date": "2026-04-10T14:04:22",
    "name": "AArch64: Cleanup code models",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "43f937720f9f3f8b642cfa1ddc9200168ab0e8d5",
    "submitter": {
        "id": 67598,
        "url": "http://patchwork.ozlabs.org/api/people/67598/?format=api",
        "name": "Wilco Dijkstra",
        "email": "Wilco.Dijkstra@arm.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/gcc/patch/PAWPR08MB8982692EB1AF594BBC0230C483592@PAWPR08MB8982.eurprd08.prod.outlook.com/mbox/",
    "series": [
        {
            "id": 499465,
            "url": "http://patchwork.ozlabs.org/api/series/499465/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/gcc/list/?series=499465",
            "date": "2026-04-10T14:04:22",
            "name": "AArch64: Cleanup code models",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/499465/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2221972/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2221972/checks/",
    "tags": {},
    "related": [],
    "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=RjI7YKu4;\n\tdkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com\n header.a=rsa-sha256 header.s=selector1 header.b=RjI7YKu4;\n\tdkim-atps=neutral",
            "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=2620:52:6:3111::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=RjI7YKu4;\n\tdkim=pass (1024-bit key) header.d=arm.com header.i=@arm.com\n header.a=rsa-sha256 header.s=selector1 header.b=RjI7YKu4",
            "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=40.107.130.71"
        ],
        "Received": [
            "from vm01.sourceware.org (vm01.sourceware.org\n [IPv6:2620:52:6:3111::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 4fsdrL6h34z1yGb\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 11 Apr 2026 00:06:09 +1000 (AEST)",
            "from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 467254BA2E2E\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 10 Apr 2026 14:06:06 +0000 (GMT)",
            "from MRWPR03CU001.outbound.protection.outlook.com\n (mail-francesouthazon11011071.outbound.protection.outlook.com\n [40.107.130.71])\n by sourceware.org (Postfix) with ESMTPS id 98FC74BA2E10\n for <gcc-patches@gcc.gnu.org>; Fri, 10 Apr 2026 14:05:34 +0000 (GMT)",
            "from DU2PR04CA0081.eurprd04.prod.outlook.com (2603:10a6:10:232::26)\n by PA4PR08MB6144.eurprd08.prod.outlook.com (2603:10a6:102:e3::18)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.42; Fri, 10 Apr\n 2026 14:05:27 +0000",
            "from DU2PEPF00028D0E.eurprd03.prod.outlook.com\n (2603:10a6:10:232:cafe::cf) by DU2PR04CA0081.outlook.office365.com\n (2603:10a6:10:232::26) with Microsoft SMTP Server (version=TLS1_3,\n cipher=TLS_AES_256_GCM_SHA384) id 15.20.9769.42 via Frontend Transport; Fri,\n 10 Apr 2026 14:05:26 +0000",
            "from outbound-uk1.az.dlp.m.darktrace.com (4.158.2.129) by\n DU2PEPF00028D0E.mail.protection.outlook.com (10.167.242.22) with Microsoft\n SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.9745.21\n via Frontend Transport; Fri, 10 Apr 2026 14:05:26 +0000",
            "from PAWPR08MB8982.eurprd08.prod.outlook.com (2603:10a6:102:33f::20)\n by GV1PR08MB7780.eurprd08.prod.outlook.com (2603:10a6:150:58::6) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.42; Fri, 10 Apr\n 2026 14:04:22 +0000",
            "from PAWPR08MB8982.eurprd08.prod.outlook.com\n ([fe80::5821:707a:c30b:dd9a]) by PAWPR08MB8982.eurprd08.prod.outlook.com\n ([fe80::5821:707a:c30b:dd9a%5]) with mapi id 15.20.9769.016; Fri, 10 Apr 2026\n 14:04:22 +0000"
        ],
        "DKIM-Filter": [
            "OpenDKIM Filter v2.11.0 sourceware.org 467254BA2E2E",
            "OpenDKIM Filter v2.11.0 sourceware.org 98FC74BA2E10"
        ],
        "DMARC-Filter": "OpenDMARC Filter v1.4.2 sourceware.org 98FC74BA2E10",
        "ARC-Filter": "OpenARC Filter v1.0.0 sourceware.org 98FC74BA2E10",
        "ARC-Seal": [
            "i=3; a=rsa-sha256; d=sourceware.org; s=key; t=1775829935; cv=pass;\n b=w4GOJQoyoF79zOlZoS9vn4h6it19Ynz+DjqhGvjH5rz3XIx5PjL6u1aaw0wbfot1rmHlgfCEHaR9yaFM99vWtu7nPUAhwiL1mn3gJ+Hd8HutfVtu0J0O3/xQ2Y/IWA1nvsK93928BB4VHvfCLEa3OakvzxdaxaVjxPper/fMP0Q=",
            "i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass;\n b=VCfFLYrBvw+41wmLB/3XTOJ9iZQYFUI6r7h9bM14V8DoJ5x12KL7hpg1YehfsuDxpVqPBolXpz1HWG9I0A4aWjiuLRqkWTlIXMQPMlRAm96kEo9RofT3zY9XDtS8cS0Z7vPBR6PIFgX0WcQrOoP+vLxVpfQSuRj57mlFVBG1ROSZ20RQ0E9E6N2cWswDg8gBEl+4wOXYhNA0x1hivF2EKHbww+mt/N78OjZp/sZv9j4eT91V3ApX55/57lvopsNDSpPWz9VTm6HxJTJgBlqy7r52YoljUPv/tzswCBx9jMj3jZQzfQ6a+Y3PqtO5pZy5bm/rXt5e0ZCuh4w0ObpmFA==",
            "i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=iQM02U2mgeoSjk5SOVD/zumcwhBRAuTx1fJNIjINqmlKW/5J/v/nGU0kun+J11cIK2V1NKfxlj8vReD3D8R8sRQra69MwjsnjZcxKpkSNJQZdPZ1Bs6WYgZejD6Ay4niWSAZwld0dnwrKK2NELi+GO2jOjI36cOtLVKkXEuby66eOOBkr3500p2dvDHiOz7y071MzdHdG6hXGMSpescY4LbUGK8AYy0w0KuOZXz7thFBC20Oy4U/EVk8zVvfBQnsX9xBddDgRuCFy/wR0Q4eD8k43Mlm1F2R/utDzzTfOcXMuRkyiZ7lJ8ORi2OLfg0sQuaeJlpXHKKQzZWp1/g1VA=="
        ],
        "ARC-Message-Signature": [
            "i=3; a=rsa-sha256; d=sourceware.org; s=key;\n t=1775829935; c=relaxed/simple;\n bh=ktkFj6xBqG0GAjO6fjZyycDcbcE2o11OWU/qMEPUAoY=;\n h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID:\n MIME-Version;\n b=IIGAx/P7iP7tzygHspgqV3RuYxOfOirQlyaqmH9vAxxZaO+W4WOBKSJvqB82eXHGawDtldlAs3P9BZDB8J7lVlRn7aoH5O85RbhQ9OjdCx/p02Vspzc/uhtvdUgg6N5t844jnoSQ0xGb5lIdNzXZPITTf0B3WlP+jnyiE40vG2M=",
            "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=AKR+nbnEX0PZ009ypZgG/EKlJ8ZR1I/HIUNlhczv5ms=;\n b=Iq9xoGsv0aKO40tkPUiKHrT6GUTbNP09lY5K+ISh3RpVyhCunKvwb2dsUTmw5zICvkU7O7UKUrZy91JFa8TkYtx5lBqn1nrJw3JbNQNSEXMrNGy93jg4qCr9rkfUTuK5/+fhzkA5FVlKZTPKyOVPD6lOcQeFsCh199k37WX8Np6TI2fGOXJRfEvccbH94HAW4WeAp93yBVRD0BvL3R6FB5e9RIFLY7g4NuMM/yyw7JSrbHn0T95LodRn4Yauh+XELp/CL4BjSKtwhH4SfSgP8AMzq99Tzomivpt6Kws4BEhU6kXheSxiYiSNC1kE4OzNB2EFkTD5jYoYdwTpODjbjA==",
            "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=AKR+nbnEX0PZ009ypZgG/EKlJ8ZR1I/HIUNlhczv5ms=;\n b=l7aO/74lIKfWEzeQL2p/1QdML8LySpREsK3Wl+HeUgC6psSQJQbPADB3S4FXMHce++y/1dApGjhuXnrMPZdP0nSI53fbxXYoDKrFpMBxZht2YTKY8Thh4ELZ7uzAKAJkdVc9diPXqQ3YZ87L/CC6rcJBF2SMXzGjNHpg9P8+QC3K+BbroOohbUY80ghA71Rfsw6yeHzcBrEHprGPJPQMmqJCpDE+iLukRjPpC7NfDZE537Ao6hQHO/sE2BSAYhdFGAyV8zjQUpJHQCLvJo+1LZ3WIDZdgWRoXdqe3KTfajK3xbl7LBuxv/5V23hHhCtn9cc5jGUXIvkkn92bUYiboQ=="
        ],
        "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] dkim=[1,1,header.d=arm.com]\n dmarc=[1,1,header.from=arm.com])",
            "i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass\n header.d=arm.com; arc=none"
        ],
        "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=AKR+nbnEX0PZ009ypZgG/EKlJ8ZR1I/HIUNlhczv5ms=;\n b=RjI7YKu4OfHo9vxVYfb1Pq8XyzE/okS43mV5Yb+TpJrYrz5JxKurHwVKcGGFv/C+u+8vM6veAqYELNd0skwIBl4venTwx/h1BiRIzn0pQ6zO5uBKM7Ie0k0xaIjL9r2W4oavJbY16sg0EWOhRa2Li2hHzAkMFjA4oTPfHxpWxWc=",
            "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=AKR+nbnEX0PZ009ypZgG/EKlJ8ZR1I/HIUNlhczv5ms=;\n b=RjI7YKu4OfHo9vxVYfb1Pq8XyzE/okS43mV5Yb+TpJrYrz5JxKurHwVKcGGFv/C+u+8vM6veAqYELNd0skwIBl4venTwx/h1BiRIzn0pQ6zO5uBKM7Ie0k0xaIjL9r2W4oavJbY16sg0EWOhRa2Li2hHzAkMFjA4oTPfHxpWxWc="
        ],
        "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;",
        "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",
        "From": "Wilco Dijkstra <Wilco.Dijkstra@arm.com>",
        "To": "GCC Patches <gcc-patches@gcc.gnu.org>",
        "CC": "Alex Coplan <Alex.Coplan@arm.com>, Alice Carlotti\n <Alice.Carlotti@arm.com>, Andrew Pinski <andrew.pinski@oss.qualcomm.com>,\n Kyrylo Tkachov <ktkachov@nvidia.com>, Tamar Christina\n <Tamar.Christina@arm.com>",
        "Subject": "[PATCH] AArch64: Cleanup code models",
        "Thread-Topic": "[PATCH] AArch64: Cleanup code models",
        "Thread-Index": "AQHcyPKEsPIXkzgVKUS9e03ippQsbw==",
        "Date": "Fri, 10 Apr 2026 14:04:22 +0000",
        "Message-ID": "\n <PAWPR08MB8982692EB1AF594BBC0230C483592@PAWPR08MB8982.eurprd08.prod.outlook.com>",
        "Accept-Language": "en-GB, en-US",
        "Content-Language": "en-GB",
        "X-MS-Has-Attach": "",
        "X-MS-TNEF-Correlator": "",
        "msip_labels": "",
        "Authentication-Results-Original": "dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=arm.com;",
        "x-ms-traffictypediagnostic": "\n PAWPR08MB8982:EE_|GV1PR08MB7780:EE_|DU2PEPF00028D0E:EE_|PA4PR08MB6144:EE_",
        "X-MS-Office365-Filtering-Correlation-Id": "3503d144-ce4b-47ae-f998-08de970a3732",
        "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|376014|366016|1800799024|38070700021|18002099003|56012099003;",
        "X-Microsoft-Antispam-Message-Info-Original": "\n 4Qk4DXSbq3LYUMLEs3jtFDCCDuOsVWK8ofeEgUw4eb1yniyPhh7gg+9OdWppO7tIf5oVEy8VX7FKU+J4Tg/5SW68kSrzjXaMLns1SYTkvKEZbEC2/H6X4J4AFkv1q+713+06MbYJggubrCU9RSHAxEY8AzfhjjSpW0KULBI0XRvSY2datxAuas5vyFOxdiT7bKrTKUGLAbbnv+YY6zsKrOBj1l6qP3cYCgir51MmHDvwh8bB1UEfBuewT55SgR/ZVcvrVAZ5DwDr69PPLEIyio3XlCyFFOiLFcz7gXUWjUfLoDXaDZCtvDWBnU26hvvVSJhPpVlVOzetUy72Jjcev8eobKP1LOqKEVyRLfEhGdm2h+1PECr6TzxsteKWGjaKfEa6HD2aowfBWgk7uAkGB7fHdmzkM30XMYEEJCCqv8tcn1isZ9tOXluJU4lF7fiGMpB3uuKAfYO913WTK/QHhBzJZ8sujI0KWO04NpDGPo3w64jFkNUSW0kwEJkU0OsnI5zwigPNefvIufCLRWfzTW2VxRueOZvBUqnigkrM7q1MrUGjZuMk5jdS8DX4zaaQq6UB7OdwENpQ/uGM+XeKwttlBD64EHIQyM5IwWcPUxRH5CnuewAlhpuhKd2n2xuA2RJiVJi4L37CE6jYnRLiwsBY21RmajlvOr3kBnkGAgCUk80O1uSTELwxuSloLzzOkwsfUkDOcO65B62lDxGy6mzFVbn81AVvsAMYZDvpNGryREz9UIAPEzQuBN+HQahAiMH5O/9Ve03dKyJmF1yD3YCeMAiyhLfTXnDh7iTMhrc=",
        "X-Forefront-Antispam-Report-Untrusted": "CIP:255.255.255.255; CTRY:; LANG:en;\n SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PAWPR08MB8982.eurprd08.prod.outlook.com;\n PTR:; CAT:NONE;\n SFS:(13230040)(376014)(366016)(1800799024)(38070700021)(18002099003)(56012099003);\n DIR:OUT; SFP:1101;",
        "Content-Type": "text/plain; charset=\"iso-8859-1\"",
        "Content-Transfer-Encoding": "quoted-printable",
        "MIME-Version": "1.0",
        "X-Exchange-RoutingPolicyChecked": "\n lgDNcFLMLP45dzf1gSdRBhpCQzit5cWAueVo0yp2LrGR30Cc/AzmSXmu7k/wON1xpsPEPtWpl1mtb4jr3ITpIv3MzSxN+HHOCDQYWJNGlNI70/uGEQEkC6wqpUiZgMfzPhASH8BNbx3pJeb8cQOAg2f2fxiENn2657jJdWLv7D4tkyqK5m6jf5HJLRps1AU19WxXVQ87IfG4hSQOqw31KliUVTC5BTkFNmuD4hvY5Nk60UQ938kX3XdpLDozL10eHYLqDSVee/JnSJRFL8BucBEAKoJl2dM5hVQ9+ZlWQbX9CKs9FSdrl0M2BR+TOFAjkxOHfwEWnwHPa3EVDJ7Ffg==",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": [
            "GV1PR08MB7780",
            "PA4PR08MB6144"
        ],
        "X-EOPAttributedMessage": "0",
        "X-MS-Exchange-Transport-CrossTenantHeadersStripped": "\n DU2PEPF00028D0E.eurprd03.prod.outlook.com",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-Office365-Filtering-Correlation-Id-Prvs": "\n 54af9ac9-6d49-4ae8-a026-08de970a1124",
        "X-Microsoft-Antispam": "BCL:0;\n ARA:13230040|14060799003|82310400026|36860700016|1800799024|35042699022|376014|56012099003|18002099003;",
        "X-Microsoft-Antispam-Message-Info": "\n PaBz3uEpnAz4B8pfSqQajtoA2ehGa3qd54plbjDGzriztUzn30rXgb9bm4Yc8cSz5REoFLAZb/BskI3dXo2ZpU6dJuYoVtvkISwxvwvZK308+kSDvhIi98sFc/A5VW07/hhY+++648krtmN1AWmvHl+3n5EivWsGxeH1QQ/ycGILVcskpBtpU4XM149iUP2jw0K2zk1GPWIWlbwB1kuaE5HcMaPHkLo56HGy/7LAAgV31eX9lWjaTFduFXMgMVCDifCD+Rz/H3Hm5qB1WYDZAed+0dwxkiaix3Bvp+3PaohO5qNCWIEvyNTi42D41NcaWiIrjLOg63tYAn4xP4pgRIbUTJzlz7Hz+QGJV0Y25/OoUSGbs8EjFpSgIxn9BsxXB1ryRb1q12bYqjvouDv5mPu+wa22sZ2GQPgRjAq5xOXbIQyooXMA8mrspdZiGljhPoR8GdYBSXaIQj33l6F23eLeRuH50uZpD8j/vA6ANkpuOlY06PTKe72ofrjp7Rzgawut22A5/8ntOWFqFAipqLzHgIcAfmhxoxOqktKxKfq+HCPFS5ALGmeAbHENVDm16TK53cOR9pZWA9zSUw5tx27krHeUiXkZ2Pr3PW7xrziU6rZLwfJXvwVkTIZVfZ5kHVkuH75Fizlu371R6TW/kUHS5RbFWVvp4aKUzMhH8qCQXYuCgmfBVM7NgKEQwi2c07Gt2cY8oGEN73xha9kF+gVJXjDQ6bKXRLznqI1FMFLoiYvTZXp60GuF9WrDh/z5Z3FrR432rZrWb8sHwRfUxA==",
        "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)(14060799003)(82310400026)(36860700016)(1800799024)(35042699022)(376014)(56012099003)(18002099003);\n DIR:OUT; SFP:1101;",
        "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "1",
        "X-MS-Exchange-AntiSpam-MessageData-0": "\n WdJ0w5s3xf8aKiXJdJ6IbmY5ZbLjanxlBtVpGnzie8gNoZD8d7TV9YGifXS2dUuGoeJX8mzHFslUF6beMGyGW2rPHwiv8/lts8qUjaID6G0zX/9JQCeT4JywU0HMFrsS9HkfjdinuJy1RLCypgETTDARhZ0SrsBluvyUO10DtnCf6pGz0lEpdSgZ5SCJh+FOFMXE/8qAR3MKO8lIyxCVPhMAl4t7iIAQnOggiBDICxx7VYcAOsQLLATyKtDoG/ASi6k6KwhB1nMXPyBiSxgtRSRsUG6UYN7hKtrjL/8X2hzVWfIXZ0Ez54/5mgIPpQyTKt+tuj3XOit6Mm3MlHh+X2VyghxZGBy9haZrjuzIlqOZa2xfCVmQ+PXPLw82G4c1fOd8zV+AoKhd54OIvJ6XOAyOIE9WLY2SoU+LnizT8cbVwIUdL1WHb7A6kPQkRYf9",
        "X-OriginatorOrg": "arm.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "10 Apr 2026 14:05:26.3656 (UTC)",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n 3503d144-ce4b-47ae-f998-08de970a3732",
        "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 DU2PEPF00028D0E.eurprd03.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": "Cleanup code models - remove the confusing AARCH64_CMODEL_TINY_PIC,\nAARCH64_CMODEL_SMALL_PIC and AARCH64_CMODEL_SMALL_SPIC.  This simplifies\na lot of code. No change to generated code.\n\nPasses regress, OK for commit?\n\ngcc:\n\t* config/aarch64/aarch64.h (HAS_LONG_COND_BRANCH): Unused, remove.\n\t(HAS_LONG_UNCOND_BRANCH): unused, remove.\n\t* config/aarch64/aarch64.cc (aarch64_use_pseudo_pic_reg): Declare.\n\t(aarch64_rtx_costs): Update.\n\t(aarch64_override_options_after_change_1): Likewise.\n\t(initialize_aarch64_code_model): Simplify.\n\t(aarch64_classify_tls_symbol): Likewise.\n\t(aarch64_classify_symbol): Simplify, remove duplicated code.\n\t(aarch64_asm_preferred_eh_data_format): Update.\n\t(aarch64_use_pseudo_pic_reg): Update.\n\t* config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins):\n\tRemove uses of AARCH64_CMODEL_TINY_PIC, AARCH64_CMODEL_SMALL_PIC,\n\tand AARCH64_CMODEL_SMALL_SPIC.\n\t* config/aarch64/aarch64-opts.h (aarch64_code_model):\n\tRemove AARCH64_CMODEL_TINY_PIC, AARCH64_CMODEL_SMALL_PIC and\n\tAARCH64_CMODEL_SMALL_SPIC.\n\n---",
    "diff": "diff --git a/gcc/config/aarch64/aarch64-c.cc b/gcc/config/aarch64/aarch64-c.cc\nindex b2cc3e67f6daf8045ce0cc9a5870edf06591ebec..9c9918151e7514781c98c0b41e59d45a131a1271 100644\n--- a/gcc/config/aarch64/aarch64-c.cc\n+++ b/gcc/config/aarch64/aarch64-c.cc\n@@ -181,11 +181,9 @@ aarch64_update_cpp_builtins (cpp_reader *pfile)\n   switch (aarch64_cmodel)\n     {\n       case AARCH64_CMODEL_TINY:\n-      case AARCH64_CMODEL_TINY_PIC:\n \tbuiltin_define (\"__AARCH64_CMODEL_TINY__\");\n \tbreak;\n       case AARCH64_CMODEL_SMALL:\n-      case AARCH64_CMODEL_SMALL_PIC:\n \tbuiltin_define (\"__AARCH64_CMODEL_SMALL__\");\n \tbreak;\n       case AARCH64_CMODEL_LARGE:\ndiff --git a/gcc/config/aarch64/aarch64-opts.h b/gcc/config/aarch64/aarch64-opts.h\nindex 45527809549a13564a9a527008b11d9d3998486b..423285d6b0f94f823c4883421d7d068f3d77405a 100644\n--- a/gcc/config/aarch64/aarch64-opts.h\n+++ b/gcc/config/aarch64/aarch64-opts.h\n@@ -61,26 +61,16 @@ enum aarch64_tls_type {\n   TLS_DESCRIPTORS\n };\n \n-/* The code model defines the address generation strategy.\n-   Most have a PIC and non-PIC variant.  */\n+/* The code model defines the address generation strategy.  */\n enum aarch64_code_model {\n-  /* Static code and data fit within a 1MB region.\n+  /* Static code, data and GOT/PLT fit within a 1MB region.\n      Not fully implemented, mostly treated as SMALL.  */\n   AARCH64_CMODEL_TINY,\n-  /* Static code, data and GOT/PLT fit within a 1MB region.\n-     Not fully implemented, mostly treated as SMALL_PIC.  */\n-  AARCH64_CMODEL_TINY_PIC,\n-  /* Static code and data fit within a 4GB region.\n-     The default non-PIC code model.  */\n-  AARCH64_CMODEL_SMALL,\n   /* Static code, data and GOT/PLT fit within a 4GB region.\n-     The default PIC code model.  */\n-  AARCH64_CMODEL_SMALL_PIC,\n-  /* -fpic for small memory model.\n-     GOT size to 28KiB (4K*8-4K) or 3580 entries.  */\n-  AARCH64_CMODEL_SMALL_SPIC,\n-  /* No assumptions about addresses of code and data.\n-     The PIC variant is not yet implemented.  */\n+     The default code model.  */\n+  AARCH64_CMODEL_SMALL,\n+  /* Static code, rodata and GOT/PLT fit within a 4GB region,\n+     data/bss are unlimited.  */\n   AARCH64_CMODEL_LARGE\n };\n \ndiff --git a/gcc/config/aarch64/aarch64.cc b/gcc/config/aarch64/aarch64.cc\nindex 6dcb68da16e0bd713e7c3bef3e691205e1d897e2..418d08efb385493471c7b535915c0612e16292d1 100644\n--- a/gcc/config/aarch64/aarch64.cc\n+++ b/gcc/config/aarch64/aarch64.cc\n@@ -370,6 +370,7 @@ static bool aarch64_builtin_support_vector_misalignment (machine_mode mode,\n static machine_mode aarch64_simd_container_mode (scalar_mode, poly_int64);\n static bool aarch64_print_address_internal (FILE*, machine_mode, rtx,\n \t\t\t\t\t    aarch64_addr_query_type);\n+bool aarch64_use_pseudo_pic_reg (void);\n \n /* The processor for which instructions should be scheduled.  */\n enum aarch64_cpu aarch64_tune = AARCH64_CPU_cortexa53;\n@@ -16109,22 +16110,20 @@ cost_plus:\n     case SYMBOL_REF:\n \n       if (aarch64_cmodel == AARCH64_CMODEL_LARGE\n-\t  || aarch64_cmodel == AARCH64_CMODEL_SMALL_SPIC)\n+\t  || aarch64_use_pseudo_pic_reg ())\n \t{\n \t  /* LDR.  */\n \t  if (speed)\n \t    *cost += extra_cost->ldst.load;\n \t}\n-      else if (aarch64_cmodel == AARCH64_CMODEL_SMALL\n-\t       || aarch64_cmodel == AARCH64_CMODEL_SMALL_PIC)\n+      else if (aarch64_cmodel == AARCH64_CMODEL_SMALL)\n \t{\n \t  /* ADRP, followed by ADD.  */\n \t  *cost += COSTS_N_INSNS (1);\n \t  if (speed)\n \t    *cost += 2 * extra_cost->alu.arith;\n \t}\n-      else if (aarch64_cmodel == AARCH64_CMODEL_TINY\n-\t       || aarch64_cmodel == AARCH64_CMODEL_TINY_PIC)\n+      else if (aarch64_cmodel == AARCH64_CMODEL_TINY)\n \t{\n \t  /* ADR.  */\n \t  if (speed)\n@@ -19586,8 +19585,7 @@ aarch64_override_options_after_change_1 (struct gcc_options *opts)\n \n   /* In the tiny memory model it makes no sense to disallow PC relative\n      literal pool loads.  */\n-  if (aarch64_cmodel == AARCH64_CMODEL_TINY\n-      || aarch64_cmodel == AARCH64_CMODEL_TINY_PIC)\n+  if (aarch64_cmodel == AARCH64_CMODEL_TINY)\n     aarch64_pcrelative_literal_loads = true;\n \n   /* When enabling the lower precision Newton series for the square root, also\n@@ -20214,35 +20212,13 @@ static void\n initialize_aarch64_code_model (struct gcc_options *opts)\n {\n   aarch64_cmodel = opts->x_aarch64_cmodel_var;\n-  switch (opts->x_aarch64_cmodel_var)\n+  if (aarch64_cmodel == AARCH64_CMODEL_LARGE)\n     {\n-    case AARCH64_CMODEL_TINY:\n-      if (opts->x_flag_pic)\n-\taarch64_cmodel = AARCH64_CMODEL_TINY_PIC;\n-      break;\n-    case AARCH64_CMODEL_SMALL:\n-      if (opts->x_flag_pic)\n-\t{\n-#ifdef HAVE_AS_SMALL_PIC_RELOCS\n-\t  aarch64_cmodel = (flag_pic == 2\n-\t\t\t    ? AARCH64_CMODEL_SMALL_PIC\n-\t\t\t    : AARCH64_CMODEL_SMALL_SPIC);\n-#else\n-\t  aarch64_cmodel = AARCH64_CMODEL_SMALL_PIC;\n-#endif\n-\t}\n-      break;\n-    case AARCH64_CMODEL_LARGE:\n       if (opts->x_flag_pic)\n \tsorry (\"code model %qs with %<-f%s%>\", \"large\",\n \t       opts->x_flag_pic > 1 ? \"PIC\" : \"pic\");\n       if (opts->x_aarch64_abi == AARCH64_ABI_ILP32)\n \tsorry (\"code model %qs not supported in ilp32 mode\", \"large\");\n-      break;\n-    case AARCH64_CMODEL_TINY_PIC:\n-    case AARCH64_CMODEL_SMALL_PIC:\n-    case AARCH64_CMODEL_SMALL_SPIC:\n-      gcc_unreachable ();\n     }\n }\n \n@@ -22127,23 +22103,16 @@ aarch64_tls_symbol_p (rtx x)\n enum aarch64_symbol_type\n aarch64_classify_tls_symbol (rtx x)\n {\n-  enum tls_model tls_kind = tls_symbolic_operand_type (x);\n-\n-  switch (tls_kind)\n+  switch (tls_symbolic_operand_type (x))\n     {\n     case TLS_MODEL_GLOBAL_DYNAMIC:\n     case TLS_MODEL_LOCAL_DYNAMIC:\n       return TARGET_TLS_DESC ? SYMBOL_SMALL_TLSDESC : SYMBOL_SMALL_TLSGD;\n \n     case TLS_MODEL_INITIAL_EXEC:\n-      switch (aarch64_cmodel)\n-\t{\n-\tcase AARCH64_CMODEL_TINY:\n-\tcase AARCH64_CMODEL_TINY_PIC:\n-\t  return SYMBOL_TINY_TLSIE;\n-\tdefault:\n-\t  return SYMBOL_SMALL_TLSIE;\n-\t}\n+      if (aarch64_cmodel == AARCH64_CMODEL_TINY)\n+\treturn SYMBOL_TINY_TLSIE;\n+      return SYMBOL_SMALL_TLSIE;\n \n     case TLS_MODEL_LOCAL_EXEC:\n       if (aarch64_tls_size == 12)\n@@ -22157,10 +22126,6 @@ aarch64_classify_tls_symbol (rtx x)\n       else\n \tgcc_unreachable ();\n \n-    case TLS_MODEL_EMULATED:\n-    case TLS_MODEL_NONE:\n-      return SYMBOL_FORCE_TO_MEM;\n-\n     default:\n       gcc_unreachable ();\n     }\n@@ -22176,23 +22141,13 @@ aarch64_classify_symbol (rtx x, HOST_WIDE_INT offset)\n \n   if (LABEL_REF_P (x))\n     {\n-      switch (aarch64_cmodel)\n-\t{\n-\tcase AARCH64_CMODEL_LARGE:\n-\t  return SYMBOL_FORCE_TO_MEM;\n+      if (aarch64_cmodel == AARCH64_CMODEL_TINY)\n+\treturn SYMBOL_TINY_ABSOLUTE;\n \n-\tcase AARCH64_CMODEL_TINY_PIC:\n-\tcase AARCH64_CMODEL_TINY:\n-\t  return SYMBOL_TINY_ABSOLUTE;\n+      if (aarch64_cmodel == AARCH64_CMODEL_LARGE)\n+\treturn SYMBOL_FORCE_TO_MEM;\n \n-\tcase AARCH64_CMODEL_SMALL_SPIC:\n-\tcase AARCH64_CMODEL_SMALL_PIC:\n-\tcase AARCH64_CMODEL_SMALL:\n-\t  return SYMBOL_SMALL_ABSOLUTE;\n-\n-\tdefault:\n-\t  gcc_unreachable ();\n-\t}\n+      return SYMBOL_SMALL_ABSOLUTE;\n     }\n \n   if (SYMBOL_REF_P (x))\n@@ -22200,17 +22155,22 @@ aarch64_classify_symbol (rtx x, HOST_WIDE_INT offset)\n       if (aarch64_tls_symbol_p (x))\n \treturn aarch64_classify_tls_symbol (x);\n \n-      switch (aarch64_cmodel)\n+      /* With -fPIC non-local symbols use the GOT.  For orthogonality\n+\t always use the GOT for extern weak symbols.  */\n+      if (!TARGET_PECOFF\n+\t  && (flag_pic || SYMBOL_REF_WEAK (x))\n+\t  && !aarch64_symbol_binds_local_p (x))\n \t{\n-\tcase AARCH64_CMODEL_TINY_PIC:\n-\tcase AARCH64_CMODEL_TINY:\n-\t  /* With -fPIC non-local symbols use the GOT.  For orthogonality\n-\t     always use the GOT for extern weak symbols.  */\n-\t  if (!TARGET_PECOFF\n-\t      && (flag_pic || SYMBOL_REF_WEAK (x))\n-\t      && !aarch64_symbol_binds_local_p (x))\n+\t  if (aarch64_cmodel == AARCH64_CMODEL_TINY)\n \t    return SYMBOL_TINY_GOT;\n+\t  if (aarch64_use_pseudo_pic_reg ())\n+\t    return SYMBOL_SMALL_GOT_28K;\n+\t  return SYMBOL_SMALL_GOT_4G;\n+\t}\n \n+      switch (aarch64_cmodel)\n+\t{\n+\tcase AARCH64_CMODEL_TINY:\n \t  /* When we retrieve symbol + offset address, we have to make sure\n \t     the offset does not cause overflow of the final address.  But\n \t     we have no way of knowing the address of symbol at compile time\n@@ -22226,15 +22186,7 @@ aarch64_classify_symbol (rtx x, HOST_WIDE_INT offset)\n \t  return SYMBOL_TINY_ABSOLUTE;\n \n \n-\tcase AARCH64_CMODEL_SMALL_SPIC:\n-\tcase AARCH64_CMODEL_SMALL_PIC:\n \tcase AARCH64_CMODEL_SMALL:\n-\t  if (!TARGET_PECOFF\n-\t      && (flag_pic || SYMBOL_REF_WEAK (x))\n-\t      && !aarch64_symbol_binds_local_p (x))\n-\t    return aarch64_cmodel == AARCH64_CMODEL_SMALL_SPIC\n-\t\t    ? SYMBOL_SMALL_GOT_28K : SYMBOL_SMALL_GOT_4G;\n-\n \t  /* Same reasoning as the tiny code model, but the offset cap here is\n \t     1MB, allowing +/-3.9GB for the offset to the symbol.  */\n \t  if (!(IN_RANGE (offset, -0x100000, 0x100000)\n@@ -22257,8 +22209,7 @@ aarch64_classify_symbol (rtx x, HOST_WIDE_INT offset)\n \t}\n     }\n \n-  /* By default push everything into the constant pool.  */\n-  return SYMBOL_FORCE_TO_MEM;\n+  gcc_unreachable ();\n }\n \n bool\n@@ -26231,10 +26182,7 @@ aarch64_asm_preferred_eh_data_format (int code ATTRIBUTE_UNUSED, int global)\n    switch (aarch64_cmodel)\n      {\n      case AARCH64_CMODEL_TINY:\n-     case AARCH64_CMODEL_TINY_PIC:\n      case AARCH64_CMODEL_SMALL:\n-     case AARCH64_CMODEL_SMALL_PIC:\n-     case AARCH64_CMODEL_SMALL_SPIC:\n        /* text+got+data < 4Gb.  4-byte signed relocs are sufficient\n \t  for everything.  */\n        type = DW_EH_PE_sdata4;\n@@ -30254,13 +30202,17 @@ aarch64_empty_mask_is_expensive (unsigned)\n   return false;\n }\n \n-/* Return 1 if pseudo register should be created and used to hold\n-   GOT address for PIC code.  */\n+/* Return true if a pseudo register should be created and used to hold the\n+   GOT address for -fpic.  */\n \n bool\n aarch64_use_pseudo_pic_reg (void)\n {\n-  return aarch64_cmodel == AARCH64_CMODEL_SMALL_SPIC;\n+#ifdef HAVE_AS_SMALL_PIC_RELOCS\n+  return flag_pic == 1 && aarch64_cmodel == AARCH64_CMODEL_SMALL;\n+#else\n+  return false;\n+#endif\n }\n \n /* Implement TARGET_UNSPEC_MAY_TRAP_P.  */\ndiff --git a/gcc/config/aarch64/aarch64.h b/gcc/config/aarch64/aarch64.h\nindex d61705d78f61924c1635d6fd9304fea23bb18aa2..681dff03bbf0dc8a9c135d756a9798008449411c 100644\n--- a/gcc/config/aarch64/aarch64.h\n+++ b/gcc/config/aarch64/aarch64.h\n@@ -1500,16 +1500,6 @@ typedef struct\n \n extern enum aarch64_code_model aarch64_cmodel;\n \n-/* When using the tiny addressing model conditional and unconditional branches\n-   can span the whole of the available address space (1MB).  */\n-#define HAS_LONG_COND_BRANCH\t\t\t\t\\\n-  (aarch64_cmodel == AARCH64_CMODEL_TINY\t\t\\\n-   || aarch64_cmodel == AARCH64_CMODEL_TINY_PIC)\n-\n-#define HAS_LONG_UNCOND_BRANCH\t\t\t\t\\\n-  (aarch64_cmodel == AARCH64_CMODEL_TINY\t\t\\\n-   || aarch64_cmodel == AARCH64_CMODEL_TINY_PIC)\n-\n #define TARGET_HAS_FMV_TARGET_ATTRIBUTE 0\n \n #define TARGET_SUPPORTS_WIDE_INT 1\n",
    "prefixes": []
}