get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 2219985,
    "url": "http://patchwork.ozlabs.org/api/patches/2219985/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/gcc/patch/adJ4AoQdUp8Znpyj@Thaum.localdomain/",
    "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": "<adJ4AoQdUp8Znpyj@Thaum.localdomain>",
    "list_archive_url": null,
    "date": "2026-04-05T14:56:02",
    "name": "c++/modules: Fix propagating noexcept for templates [PR124785]",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "3c16dfdb1c92f80c55ed556e669b28c6b571573a",
    "submitter": {
        "id": 85216,
        "url": "http://patchwork.ozlabs.org/api/people/85216/?format=api",
        "name": "Nathaniel Shead",
        "email": "nathanieloshead@gmail.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/gcc/patch/adJ4AoQdUp8Znpyj@Thaum.localdomain/mbox/",
    "series": [
        {
            "id": 498789,
            "url": "http://patchwork.ozlabs.org/api/series/498789/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/gcc/list/?series=498789",
            "date": "2026-04-05T14:56:02",
            "name": "c++/modules: Fix propagating noexcept for templates [PR124785]",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/498789/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2219985/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2219985/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 (2048-bit key;\n unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256\n header.s=20251104 header.b=fc8/3ynr;\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 (2048-bit key,\n unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256\n header.s=20251104 header.b=fc8/3ynr",
            "sourceware.org;\n dmarc=pass (p=none dis=none) header.from=gmail.com",
            "sourceware.org; spf=pass smtp.mailfrom=gmail.com",
            "server2.sourceware.org;\n arc=none smtp.remote-ip=209.85.216.45"
        ],
        "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 4fpbBx08m4z1yCs\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 06 Apr 2026 00:56:39 +1000 (AEST)",
            "from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id C46134BA2E11\n\tfor <incoming@patchwork.ozlabs.org>; Sun,  5 Apr 2026 14:56:37 +0000 (GMT)",
            "from mail-pj1-f45.google.com (mail-pj1-f45.google.com\n [209.85.216.45])\n by sourceware.org (Postfix) with ESMTPS id 421804BA2E20\n for <gcc-patches@gcc.gnu.org>; Sun,  5 Apr 2026 14:56:10 +0000 (GMT)",
            "by mail-pj1-f45.google.com with SMTP id\n 98e67ed59e1d1-35d9603c2c0so823065a91.2\n for <gcc-patches@gcc.gnu.org>; Sun, 05 Apr 2026 07:56:10 -0700 (PDT)",
            "from Thaum.localdomain (163-53-146-3.ip4.superloop.au.\n [163.53.146.3]) by smtp.gmail.com with ESMTPSA id\n d9443c01a7336-2b27472d618sm107764115ad.12.2026.04.05.07.56.07\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Sun, 05 Apr 2026 07:56:08 -0700 (PDT)"
        ],
        "DKIM-Filter": [
            "OpenDKIM Filter v2.11.0 sourceware.org C46134BA2E11",
            "OpenDKIM Filter v2.11.0 sourceware.org 421804BA2E20"
        ],
        "DMARC-Filter": "OpenDMARC Filter v1.4.2 sourceware.org 421804BA2E20",
        "ARC-Filter": "OpenARC Filter v1.0.0 sourceware.org 421804BA2E20",
        "ARC-Seal": "i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1775400970; cv=none;\n b=gHM9v+ZTruQWE0gtu6xBsZyoaBfeliCWG0EWeR1h1K8joMKdZSbxSXKEJ+Xn5itiuKiI4RYlbtt9wqec2x2ciImNivnfwwyhgihys7upBWej5ntObHC0ghHdAz6AXQyMreipwWmD2y2am1JgeD3QxDSTOj6tvRzpsep2bWvRVYc=",
        "ARC-Message-Signature": "i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1775400970; c=relaxed/simple;\n bh=3Bc973kqAHbCHfVLWdyBUmDTINb3/f8y/nSUtTTGskA=;\n h=DKIM-Signature:Date:From:To:Subject:Message-ID:MIME-Version;\n b=oD6mM5Qq3XUbB4/re7iXGnW0gn8Nnf1nR4g2rp0s3WPSHJ/4o9yWwl1G1ooyKNYWmenbIzClI0K6XoiOHwuU6V/k7SsG6Nx7So6KMuMHyyvS6DvaI5M3iXHa5k+bHV+8u6QD/zmkyfgeHFuijifWbMbzrHPBJih94wHqDkbhN+E=",
        "ARC-Authentication-Results": "i=1; server2.sourceware.org",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=gmail.com; s=20251104; t=1775400969; x=1776005769; darn=gcc.gnu.org;\n h=content-disposition:mime-version:message-id:subject:cc:to:from:date\n :from:to:cc:subject:date:message-id:reply-to;\n bh=uDlH9OCAAQHRlVMrquEhqJn5dJJ9cfhFGwrOCy1GL64=;\n b=fc8/3ynrqYDL+oqiDuu+ORn86/AeH2MT9PlYbpJ0mbaubPx41WSLpT6/9YGaXAQz9J\n /oXBuZOdaLk3f4ntKFD4Fr4Kf8OBmZ6s5Vb4oLTG9plKCrQpbmzjWfEKvgrJMo3Ovb4W\n lDxm2l5V+33njfiAoL+zFo3xrBBG14PoGy0KDLF6mpMWA2agxz/dOOgRBGHeJCdHWIv2\n 1RTmGVujDvnYQ3jvx+2mxiIW0QtzqcMRWNeICfUT9Ol5v9aROunnP3i9UztdTOf6FBr1\n 3q1Zh+yzwG4B38ve6G4yW59v4jM1TUMYyumucZgyY/22ZsrFk08mhbnXnDqSRc3INQjS\n LGkA==",
        "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1775400969; x=1776005769;\n h=content-disposition:mime-version:message-id:subject:cc:to:from:date\n :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id\n :reply-to;\n bh=uDlH9OCAAQHRlVMrquEhqJn5dJJ9cfhFGwrOCy1GL64=;\n b=Pkkj5AgQGbu1fCRfCk+HYoJ+4KEhX2hiKhg1OjLneQ+765UxNS/kOa//bWEJLnhlRd\n 1dCVDqfiTGWguYQ+R943PD0BO1FM1Ug1e33z+JK/tfCPZxa+124sPmtqNBbXO/gxqoQe\n GjYNGlbLT3iSty8sCMbTwtvrODCJxxuMw3tGpuWiPighTFgNa933eEcF0qhp7BAolWnj\n HnUQRVq6vBgyK+7nhjuV0trIuCfmHBWAtTf/r78547+ZjRJ3Erus+4swcTCscjTUAk1n\n C05HF9MQc9l64IPeJpza/4pNJNaTjNFkXStIoEdUrX9U6Q/O4Bv+naEcqw4X23g6A+am\n iKGg==",
        "X-Gm-Message-State": "AOJu0YzxJDq/fmvwavbV9g8WJwfwWzumnIIuECd+QkX9YnN9WbuaU1N4\n IxkCLt8xcqfLaB2J1rT208jR5r49rjaq0EsyT27ftfO7atj2EzyL0qdUg4EM9A==",
        "X-Gm-Gg": "AeBDieupUuUmTHPIaBb3qWaV15CgIc6q/VkNBNiJGFEKPrZ7WayuPDukxUEZBv+lmUR\n PYlHZDxj0sGWZ1lRxhmeAnBbzpvQBjeEU7mKUmEzgVCCIYmUPUGl++2UyR+09tM2pTOlZob7Ap9\n qCVBz5b2TM7yjfZWk7w2EkHtdYdVnbLC+uWoo/g6G+oKXujPlgI5lgVE7Xh+SvAOc6kpbK7r2/p\n HZLnOR2dfmq65N253TWm8Koe3EMxh+5Aqolt3k5dccOctX3hrbmHqyztsawgmuUN8FGcH7n38lo\n gpKPC7EAbkJT2yt2mq1C+YcYnToF0z2ZEfY6rD/URhqWleXb0ZIPrOoYIPyXvTydmJaiSqhussg\n bWfWiR4G2YhhlgKQWrhi7am/jxbsD3lkpyAmUBr0M8EvBJUirYNC1AuOwURz36o089boABqQkop\n uQsvq7x09SyUCrAV8AY7+a4bFvmod/lyQDdg1wAD90ETS90u9JOzXSqLtMGXw7q1YOg05LXXxrl\n L0=",
        "X-Received": "by 2002:a17:903:186:b0:2b2:5822:7a65 with SMTP id\n d9443c01a7336-2b28192dd24mr56629455ad.8.1775400969083;\n Sun, 05 Apr 2026 07:56:09 -0700 (PDT)",
        "Date": "Mon, 6 Apr 2026 00:56:02 +1000",
        "From": "Nathaniel Shead <nathanieloshead@gmail.com>",
        "To": "gcc-patches@gcc.gnu.org",
        "Cc": "Jason Merrill <jason@redhat.com>",
        "Subject": "[PATCH] c++/modules: Fix propagating noexcept for templates\n [PR124785]",
        "Message-ID": "<adJ4AoQdUp8Znpyj@Thaum.localdomain>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=us-ascii",
        "Content-Disposition": "inline",
        "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": "Bootstrapped and regtested on x86_64-pc-linux-gnu, OK for trunk/15?\n\n-- >8 --\n\nWe triggered a checking assertion because when propagating deduced\nnoexcept, we were updating the type of the existing TEMPLATE_DECL but\nnot the type of its DECL_TEMPLATE_RESULT, violating assumptions made\nlater on during modules streaming.\n\nBut actually there was nothing to propagate here anyway, these\ndeclarations are identical, so this patch also fixes the condition for\nchecking whether we need to propagate anything.  And so now I don't\nthink there is ever a case we should have a noexcept-spec to propagate\nfor a TEMPLATE_DECL, so add an assertion to validate this.\n\n\tPR c++/124785\n\ngcc/cp/ChangeLog:\n\n\t* module.cc (trees_in::is_matching_decl): Narrow condition for\n\twhen noexcept propagation occurs; assert that we don't propagate\n\tnoexcept-specs for TEMPLATE_DECLs.\n\ngcc/testsuite/ChangeLog:\n\n\t* g++.dg/modules/noexcept-5.h: New test.\n\t* g++.dg/modules/noexcept-5_a.C: New test.\n\t* g++.dg/modules/noexcept-5_b.C: New test.\n\t* g++.dg/modules/noexcept-5_c.C: New test.\n\nSigned-off-by: Nathaniel Shead <nathanieloshead@gmail.com>\n---\n gcc/cp/module.cc                            |  4 +++-\n gcc/testsuite/g++.dg/modules/noexcept-5.h   |  4 ++++\n gcc/testsuite/g++.dg/modules/noexcept-5_a.C |  7 +++++++\n gcc/testsuite/g++.dg/modules/noexcept-5_b.C |  7 +++++++\n gcc/testsuite/g++.dg/modules/noexcept-5_c.C | 11 +++++++++++\n 5 files changed, 32 insertions(+), 1 deletion(-)\n create mode 100644 gcc/testsuite/g++.dg/modules/noexcept-5.h\n create mode 100644 gcc/testsuite/g++.dg/modules/noexcept-5_a.C\n create mode 100644 gcc/testsuite/g++.dg/modules/noexcept-5_b.C\n create mode 100644 gcc/testsuite/g++.dg/modules/noexcept-5_c.C",
    "diff": "diff --git a/gcc/cp/module.cc b/gcc/cp/module.cc\nindex a8517569a1b..8b820f97fee 100644\n--- a/gcc/cp/module.cc\n+++ b/gcc/cp/module.cc\n@@ -12619,12 +12619,14 @@ trees_in::is_matching_decl (tree existing, tree decl, bool is_typedef)\n       tree d_spec = TYPE_RAISES_EXCEPTIONS (d_type);\n       if (DECL_MAYBE_DELETED (e_inner) || DEFERRED_NOEXCEPT_SPEC_P (e_spec))\n \t{\n-\t  if (!DEFERRED_NOEXCEPT_SPEC_P (d_spec)\n+\t  if (!(DECL_MAYBE_DELETED (d_inner)\n+\t\t|| DEFERRED_NOEXCEPT_SPEC_P (d_spec))\n \t      || (UNEVALUATED_NOEXCEPT_SPEC_P (e_spec)\n \t\t  && !UNEVALUATED_NOEXCEPT_SPEC_P (d_spec)))\n \t    {\n \t      dump (dumper::MERGE)\n \t\t&& dump (\"Propagating instantiated noexcept to %N\", existing);\n+\t      gcc_checking_assert (existing == e_inner);\n \t      TREE_TYPE (existing) = d_type;\n \n \t      /* Propagate to existing clones.  */\ndiff --git a/gcc/testsuite/g++.dg/modules/noexcept-5.h b/gcc/testsuite/g++.dg/modules/noexcept-5.h\nnew file mode 100644\nindex 00000000000..78d91322a1a\n--- /dev/null\n+++ b/gcc/testsuite/g++.dg/modules/noexcept-5.h\n@@ -0,0 +1,4 @@\n+// PR c++/124785\n+template <typename T> struct Iterator {\n+  constexpr friend auto operator<=>(const Iterator&, const Iterator&) = default;\n+};\ndiff --git a/gcc/testsuite/g++.dg/modules/noexcept-5_a.C b/gcc/testsuite/g++.dg/modules/noexcept-5_a.C\nnew file mode 100644\nindex 00000000000..72085717e60\n--- /dev/null\n+++ b/gcc/testsuite/g++.dg/modules/noexcept-5_a.C\n@@ -0,0 +1,7 @@\n+// PR c++/124785\n+// { dg-do compile { target c++20 } }\n+// { dg-additional-options \"-fmodules\" }\n+// { dg-module-cmi M:A }\n+\n+export module M:A;\n+#include \"noexcept-5.h\"\ndiff --git a/gcc/testsuite/g++.dg/modules/noexcept-5_b.C b/gcc/testsuite/g++.dg/modules/noexcept-5_b.C\nnew file mode 100644\nindex 00000000000..928980b6c1d\n--- /dev/null\n+++ b/gcc/testsuite/g++.dg/modules/noexcept-5_b.C\n@@ -0,0 +1,7 @@\n+// PR c++/124785\n+// { dg-do compile { target c++20 } }\n+// { dg-additional-options \"-fmodules\" }\n+// { dg-module-cmi M:B }\n+\n+export module M:B;\n+#include \"noexcept-5.h\"\ndiff --git a/gcc/testsuite/g++.dg/modules/noexcept-5_c.C b/gcc/testsuite/g++.dg/modules/noexcept-5_c.C\nnew file mode 100644\nindex 00000000000..d9349147766\n--- /dev/null\n+++ b/gcc/testsuite/g++.dg/modules/noexcept-5_c.C\n@@ -0,0 +1,11 @@\n+// PR c++/124785\n+// { dg-do compile { target c++20 } }\n+// { dg-additional-options \"-fmodules -fdump-lang-module-alias\" }\n+// { dg-module-cmi M }\n+\n+export module M;\n+export import :A;\n+export import :B;\n+\n+// The noexcept-specifiers are equivalent, no need to merge.\n+// { dg-final { scan-lang-dump-not {Propagating instantiated noexcept} module } }\n",
    "prefixes": []
}