get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 2196884,
    "url": "http://patchwork.ozlabs.org/api/patches/2196884/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/gcc/patch/20260216123600.848053-1-tkaminsk@redhat.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": "<20260216123600.848053-1-tkaminsk@redhat.com>",
    "list_archive_url": null,
    "date": "2026-02-16T12:34:50",
    "name": "libstdc++: Rename std::submdspan_extents and std::submdspan_canonicalize_slices",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "ee42245bea044f01b4cbec9a26a6d7d19f07cee8",
    "submitter": {
        "id": 90409,
        "url": "http://patchwork.ozlabs.org/api/people/90409/?format=api",
        "name": "Tomasz Kaminski",
        "email": "tkaminsk@redhat.com"
    },
    "delegate": null,
    "mbox": "http://patchwork.ozlabs.org/project/gcc/patch/20260216123600.848053-1-tkaminsk@redhat.com/mbox/",
    "series": [
        {
            "id": 492303,
            "url": "http://patchwork.ozlabs.org/api/series/492303/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/gcc/list/?series=492303",
            "date": "2026-02-16T12:34:50",
            "name": "libstdc++: Rename std::submdspan_extents and std::submdspan_canonicalize_slices",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/492303/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/2196884/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/2196884/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=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=YC61p4YE;\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=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=YC61p4YE",
            "sourceware.org; dmarc=pass (p=quarantine dis=none)\n header.from=redhat.com",
            "sourceware.org; spf=pass smtp.mailfrom=redhat.com",
            "server2.sourceware.org;\n arc=none smtp.remote-ip=170.10.133.124"
        ],
        "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 4fF2N63xvtz1xpY\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 16 Feb 2026 23:37:07 +1100 (AEDT)",
            "from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 550EA4BA2E1A\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 16 Feb 2026 12:37:05 +0000 (GMT)",
            "from us-smtp-delivery-124.mimecast.com\n (us-smtp-delivery-124.mimecast.com [170.10.133.124])\n by sourceware.org (Postfix) with ESMTP id E994E4BA2E1A\n for <gcc-patches@gcc.gnu.org>; Mon, 16 Feb 2026 12:36:06 +0000 (GMT)",
            "from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com\n (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by\n relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3,\n cipher=TLS_AES_256_GCM_SHA384) id us-mta-686-CbD-IHBEPeqMXgk1K1Fynw-1; Mon,\n 16 Feb 2026 07:36:04 -0500",
            "from mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com\n (mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.17])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest\n SHA256)\n (No client certificate requested)\n by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS\n id 1B16F18005AD; Mon, 16 Feb 2026 12:36:03 +0000 (UTC)",
            "from localhost (unknown [10.44.33.164])\n by mx-prod-int-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP\n id 547C81955F43; Mon, 16 Feb 2026 12:36:01 +0000 (UTC)"
        ],
        "DKIM-Filter": [
            "OpenDKIM Filter v2.11.0 sourceware.org 550EA4BA2E1A",
            "OpenDKIM Filter v2.11.0 sourceware.org E994E4BA2E1A"
        ],
        "DMARC-Filter": "OpenDMARC Filter v1.4.2 sourceware.org E994E4BA2E1A",
        "ARC-Filter": "OpenARC Filter v1.0.0 sourceware.org E994E4BA2E1A",
        "ARC-Seal": "i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1771245367; cv=none;\n b=jcFizsm12+9sRNKO5jzFkJ9hjeiAfO9ruhBfnU65dMgJlPUX6mujDWWTbz+fNc58PPKUd6Lm96syIt50yHsWCi0OzMB4gvq/kQaAEEAenWxnhue/EA59oeWZWMaiylTEyMRrj+5pr6rCVYs6xEJjRJrODZPIB34wfCj6X+kPI4s=",
        "ARC-Message-Signature": "i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1771245367; c=relaxed/simple;\n bh=iGY254ey7HIdThatXbXr1wcyQOAcjd37sPGFg0+fCL0=;\n h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version;\n b=qVtHKIwvGkMBKVuvpzJ8OFqgq7t6jKS7MCRpUdUffojYxHRLHoW5MjV6xAFFiV6klmO846DsGmEtJvcXVxa1ZWce4v5hoGOa4wxEyZVymGYNnXKc9Wtv9kXbZ00MVqWcpJL6mu4fwrxI63akq/VKloLoyDerl9ZBSMD/WvvUMcM=",
        "ARC-Authentication-Results": "i=1; server2.sourceware.org",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1771245366;\n h=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n to:to:cc:mime-version:mime-version:content-type:content-type:\n content-transfer-encoding:content-transfer-encoding;\n bh=oBjBfxV2YUndR4SCaJnJtzZTYw+aWa49gzzNLM575hE=;\n b=YC61p4YE/4cqVorVIazFJQ+nGuRWzMwWfJSksz3FRF1yfs0wifOsF92nJy/wfk9hbHZoK9\n 1our4+ZeabxE2l9vp5MPIqBZvDQq+BIgvClehVMNO7ZvQU2qX2rheX19gugxq+60b34Ppe\n aRfaL95l2x87JuYYPJ93t6dluhW+hG8=",
        "X-MC-Unique": "CbD-IHBEPeqMXgk1K1Fynw-1",
        "X-Mimecast-MFC-AGG-ID": "CbD-IHBEPeqMXgk1K1Fynw_1771245363",
        "From": "=?utf-8?q?Tomasz_Kami=C5=84ski?= <tkaminsk@redhat.com>",
        "To": "libstdc++@gcc.gnu.org,\n\tgcc-patches@gcc.gnu.org",
        "Subject": "[PATCH] libstdc++: Rename std::submdspan_extents and\n std::submdspan_canonicalize_slices",
        "Date": "Mon, 16 Feb 2026 13:34:50 +0100",
        "Message-ID": "<20260216123600.848053-1-tkaminsk@redhat.com>",
        "MIME-Version": "1.0",
        "X-Scanned-By": "MIMEDefang 3.0 on 10.30.177.17",
        "X-Mimecast-Spam-Score": "0",
        "X-Mimecast-MFC-PROC-ID": "mm_jpidRyLuysi9a0k9LcaEKn3YFCi8Yc0yV8K7WjQw_1771245363",
        "X-Mimecast-Originator": "redhat.com",
        "Content-Transfer-Encoding": "8bit",
        "content-type": "text/plain; charset=\"US-ASCII\"; x-default=true",
        "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 patch implements LWG 4491, addressing C++26 NB comments.\n\nlibstdc++-v3/ChangeLog:\n\n\t* include/std/mdspan (std::submdspan_extents): Rename to...\n\t(std::subextents): Rename of submdspan_extents.\n\t(std::submdspan_canonicalize_slices): Rename to...\n\t(std::canonical_slices):\n\t* testsuite/23_containers/mdspan/submdspan/submdspan_canonicalize_slices.cc:\n\tMove to...\n\t* testsuite/23_containers/mdspan/submdspan/canonical_slices.cc: ...here.\n\tUpdated calls to submdspan_canonicalize_slices.\n\t* testsuite/23_containers/mdspan/submdspan/submdspan_canonicalize_slices_neg.cc:\n\tMove to...\n\t* testsuite/23_containers/mdspan/submdspan/canonical_slices_neg.cc: ...here.\n\tUpdated calls to submdspan_canonicalize_slices.\n\t* testsuite/23_containers/mdspan/submdspan/submdspan_extents.cc: Move to...\n\t* testsuite/23_containers/mdspan/submdspan/subextents.cc: ...here.\n\tQualified and renamed calls to submdspan_extents.\n\t* testsuite/23_containers/mdspan/submdspan/submdspan_extents_neg.cc: Move to...\n\t* testsuite/23_containers/mdspan/submdspan/subextents_neg.cc: ...here.\n\tQualified and renamed calls to submdspan_extents.\n---\nI haven't added _GLIBCXX_RESOLVE_ISSUE comments, as it is trivial\nto check if the functions were renamed.\n\nTesting on x86_64-linux. All *mdspan* test already passed in all\nsupported standards.\n\n libstdc++-v3/include/std/mdspan               |  8 +++----\n ...nicalize_slices.cc => canonical_slices.cc} | 24 +++++++++----------\n ..._slices_neg.cc => canonical_slices_neg.cc} | 16 ++++++-------\n .../{submdspan_extents.cc => subextents.cc}   | 18 +++++++-------\n ...dspan_extents_neg.cc => subextents_neg.cc} |  6 ++---\n 5 files changed, 36 insertions(+), 36 deletions(-)\n rename libstdc++-v3/testsuite/23_containers/mdspan/submdspan/{submdspan_canonicalize_slices.cc => canonical_slices.cc} (87%)\n rename libstdc++-v3/testsuite/23_containers/mdspan/submdspan/{submdspan_canonicalize_slices_neg.cc => canonical_slices_neg.cc} (95%)\n rename libstdc++-v3/testsuite/23_containers/mdspan/submdspan/{submdspan_extents.cc => subextents.cc} (88%)\n rename libstdc++-v3/testsuite/23_containers/mdspan/submdspan/{submdspan_extents_neg.cc => subextents_neg.cc} (85%)",
    "diff": "diff --git a/libstdc++-v3/include/std/mdspan b/libstdc++-v3/include/std/mdspan\nindex cedf597d3c2..0c89f8e7155 100644\n--- a/libstdc++-v3/include/std/mdspan\n+++ b/libstdc++-v3/include/std/mdspan\n@@ -3348,8 +3348,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION\n   template<typename _IndexType, size_t... _Extents, typename... _RawSlices>\n     requires (sizeof...(_RawSlices) == sizeof...(_Extents))\n     constexpr auto\n-    submdspan_extents(const extents<_IndexType, _Extents...>& __exts,\n-\t\t      _RawSlices... __raw_slices)\n+    subextents(const extents<_IndexType, _Extents...>& __exts,\n+\t       _RawSlices... __raw_slices)\n     {\n       auto __impl = [&__exts](auto... __slices)\n       {\n@@ -3362,8 +3362,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION\n   template<typename _IndexType, size_t... _Extents, typename... _RawSlices>\n     requires (sizeof...(_Extents) == sizeof...(_RawSlices))\n     constexpr auto\n-    submdspan_canonicalize_slices(const extents<_IndexType, _Extents...>& __exts,\n-\t\t\t\t  _RawSlices... __raw_slices)\n+    canonical_slices(const extents<_IndexType, _Extents...>& __exts,\n+\t\t     _RawSlices... __raw_slices)\n     {\n       auto __impl = [&__exts](auto... __slices)\n       {\ndiff --git a/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/submdspan_canonicalize_slices.cc b/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/canonical_slices.cc\nsimilarity index 87%\nrename from libstdc++-v3/testsuite/23_containers/mdspan/submdspan/submdspan_canonicalize_slices.cc\nrename to libstdc++-v3/testsuite/23_containers/mdspan/submdspan/canonical_slices.cc\nindex 077bafc2a9b..5ca123eee50 100644\n--- a/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/submdspan_canonicalize_slices.cc\n+++ b/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/canonical_slices.cc\n@@ -13,11 +13,11 @@ template<typename Extents, typename CInt>\n   {\n     using IndexType = typename Extents::index_type;\n     auto ci_expected = std::cw<IndexType{ci_raw.value}>;\n-    auto [ci] = std::submdspan_canonicalize_slices(exts, ci_raw);\n+    auto [ci] = std::canonical_slices(exts, ci_raw);\n     static_assert(std::same_as<decltype(ci), decltype(ci_expected)>);\n     VERIFY(std::cmp_equal(ci.value, ci_raw.value));\n \n-    auto [i] = std::submdspan_canonicalize_slices(exts, ci_raw.value);\n+    auto [i] = std::canonical_slices(exts, ci_raw.value);\n     static_assert(std::same_as<decltype(i), IndexType>);\n     VERIFY(std::cmp_equal(i, ci_raw.value));\n     return true;\n@@ -62,25 +62,25 @@ template<template<typename, typename> typename Pair>\n     auto c1 = std::cw<IndexType{1}>;\n \n     auto raw_cc = Pair{cbegin, cend};\n-    auto [cc] = std::submdspan_canonicalize_slices(exts, raw_cc);\n+    auto [cc] = std::canonical_slices(exts, raw_cc);\n     assert_same(cc.offset, coffset);\n     assert_same(cc.extent, cextent);\n     assert_same(cc.stride, c1);\n \n     auto raw_cd = Pair{cbegin, cend.value};\n-    auto [cd] = std::submdspan_canonicalize_slices(exts, raw_cd);\n+    auto [cd] = std::canonical_slices(exts, raw_cd);\n     assert_same(cd.offset, coffset);\n     assert_same(cd.extent, cextent.value);\n     assert_same(cd.stride, c1);\n \n     auto raw_dc = Pair{cbegin.value, cend};\n-    auto [dc] = std::submdspan_canonicalize_slices(exts, raw_dc);\n+    auto [dc] = std::canonical_slices(exts, raw_dc);\n     assert_same(dc.offset, coffset.value);\n     assert_same(dc.extent, cextent.value);\n     assert_same(dc.stride, c1);\n \n     auto raw_dd = Pair{cbegin.value, cend.value};\n-    auto [dd] = std::submdspan_canonicalize_slices(exts, raw_dd);\n+    auto [dd] = std::canonical_slices(exts, raw_dd);\n     assert_same(dd.offset, coffset.value);\n     assert_same(dd.extent, cextent.value);\n     assert_same(dd.stride, c1);\n@@ -128,25 +128,25 @@ test_strided_slice(auto exts, auto co, auto ce, auto cs)\n   auto cstride = std::cw<IndexType{cs.value}>;\n \n   auto raw_ccc = std::strided_slice{co, ce, cs};\n-  auto [ccc] = std::submdspan_canonicalize_slices(exts, raw_ccc);\n+  auto [ccc] = std::canonical_slices(exts, raw_ccc);\n   assert_same(ccc.offset, coffset);\n   assert_same(ccc.extent, cextent);\n   assert_same(ccc.stride, cstride);\n \n   auto raw_dcc = std::strided_slice{co.value, ce, cs};\n-  auto [dcc] = std::submdspan_canonicalize_slices(exts, raw_dcc);\n+  auto [dcc] = std::canonical_slices(exts, raw_dcc);\n   assert_same(dcc.offset, coffset.value);\n   assert_same(dcc.extent, cextent);\n   assert_same(dcc.stride, cstride);\n \n   auto raw_cdc = std::strided_slice{co, ce.value, cs};\n-  auto [cdc] = std::submdspan_canonicalize_slices(exts, raw_cdc);\n+  auto [cdc] = std::canonical_slices(exts, raw_cdc);\n   assert_same(cdc.offset, coffset);\n   assert_same(cdc.extent, cextent.value);\n   assert_same(cdc.stride, cstride);\n \n   auto raw_ccd = std::strided_slice{co, ce, cs.value};\n-  auto [ccd] = std::submdspan_canonicalize_slices(exts, raw_ccd);\n+  auto [ccd] = std::canonical_slices(exts, raw_ccd);\n   assert_same(ccd.offset, coffset);\n   assert_same(ccd.extent, cextent);\n   assert_same(ccd.stride, cstride.value);\n@@ -174,11 +174,11 @@ test_strided_slice_zero_extent(auto exts, auto cs)\n   using IndexType = typename decltype(exts)::index_type;\n   auto c0 = std::cw<uint8_t{0}>;\n   auto raw_ccc = std::strided_slice{c0, c0, cs};\n-  auto [ccc] = std::submdspan_canonicalize_slices(exts, raw_ccc);\n+  auto [ccc] = std::canonical_slices(exts, raw_ccc);\n   assert_same(ccc.stride, std::cw<IndexType{1}>);\n \n   auto raw_ccd = std::strided_slice{c0, c0, cs.value};\n-  auto [ccd] = std::submdspan_canonicalize_slices(exts, raw_ccd);\n+  auto [ccd] = std::canonical_slices(exts, raw_ccd);\n   assert_same(ccd.stride, std::cw<IndexType{1}>);\n   return true;\n }\ndiff --git a/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/submdspan_canonicalize_slices_neg.cc b/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/canonical_slices_neg.cc\nsimilarity index 95%\nrename from libstdc++-v3/testsuite/23_containers/mdspan/submdspan/submdspan_canonicalize_slices_neg.cc\nrename to libstdc++-v3/testsuite/23_containers/mdspan/submdspan/canonical_slices_neg.cc\nindex 94bca183aa3..6dbfd5e8a1b 100644\n--- a/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/submdspan_canonicalize_slices_neg.cc\n+++ b/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/canonical_slices_neg.cc\n@@ -17,7 +17,7 @@ constexpr bool\n test_rank_mismatch()\n {\n   auto exts = std::extents(1);\n-  std::submdspan_canonicalize_slices(exts, 0, 0); // { dg-error \"no matching\" }\n+  std::canonical_slices(exts, 0, 0); // { dg-error \"no matching\" }\n   return true;\n }\n \n@@ -25,7 +25,7 @@ template<typename Int, typename Extents>\n constexpr bool\n test_under1(Int i1, Extents exts)\n {\n-  auto [s1] = std::submdspan_canonicalize_slices(exts, i1);\n+  auto [s1] = std::canonical_slices(exts, i1);\n   return true;\n }\n \n@@ -43,7 +43,7 @@ template<typename Int, typename Extents>\n constexpr bool\n test_over1(Int i1, Extents exts)\n {\n-  auto [s1] = std::submdspan_canonicalize_slices(exts, i1);\n+  auto [s1] = std::canonical_slices(exts, i1);\n   return true;\n }\n \n@@ -65,7 +65,7 @@ template<typename Offset, typename Extent, typename Stride, typename Extents>\n   constexpr bool\n   test_under2(Offset o, Extent e, Stride s, Extents exts)\n   {\n-    std::submdspan_canonicalize_slices(exts, std::strided_slice{o, e, s});\n+    std::canonical_slices(exts, std::strided_slice{o, e, s});\n     return true;\n   }\n \n@@ -105,7 +105,7 @@ template<typename Offset, typename Extent, typename Stride, typename Extents>\n   constexpr bool\n   test_over2(Offset o, Extent e, Stride s, Extents exts)\n   {\n-    std::submdspan_canonicalize_slices(exts, std::strided_slice{o, e, s});\n+    std::canonical_slices(exts, std::strided_slice{o, e, s});\n     return true;\n   }\n \n@@ -157,7 +157,7 @@ test_overflow1(auto o, auto e)\n {\n   auto exts = std::extents<uint8_t, dyn>{255};\n   auto slice = std::strided_slice{o, e, 1};\n-  std::submdspan_canonicalize_slices(exts, slice);\n+  std::canonical_slices(exts, slice);\n   return true;\n }\n \n@@ -171,7 +171,7 @@ test_overflow2(auto b, auto e)\n {\n   auto exts = std::extents<uint8_t, dyn>{255};\n   auto slice = std::pair{b, e};\n-  std::submdspan_canonicalize_slices(exts, slice);\n+  std::canonical_slices(exts, slice);\n   return true;\n }\n \n@@ -192,7 +192,7 @@ test_invalid(auto e, auto s)\n {\n   auto exts = std::extents(5);\n   auto slice = std::strided_slice(0, e, s);\n-  std::submdspan_canonicalize_slices(exts, slice);\n+  std::canonical_slices(exts, slice);\n   return true;\n }\n \ndiff --git a/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/submdspan_extents.cc b/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/subextents.cc\nsimilarity index 88%\nrename from libstdc++-v3/testsuite/23_containers/mdspan/submdspan/submdspan_extents.cc\nrename to libstdc++-v3/testsuite/23_containers/mdspan/submdspan/subextents.cc\nindex 841910a77c8..ae77d3d96a8 100644\n--- a/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/submdspan_extents.cc\n+++ b/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/subextents.cc\n@@ -11,7 +11,7 @@ constexpr bool\n test_from_full_extent()\n {\n   auto exts = std::extents<int, 3, dyn, 7>{};\n-  auto sub_exts = submdspan_extents(exts, 1, all, all);\n+  auto sub_exts = std::subextents(exts, 1, all, all);\n   VERIFY(sub_exts.rank() == 2);\n   VERIFY(sub_exts.static_extent(0) == dyn);\n   VERIFY(sub_exts.extent(0) == exts.extent(1));\n@@ -27,7 +27,7 @@ template<template<typename, typename> typename Pair, template<int> typename Cw>\n     auto s0 = Cw<1>{};\n     auto s1 = Pair{Cw<1>{}, Cw<2>{}};\n     auto s2 = Pair{Cw<1>{}, 4};\n-    auto sub_exts = submdspan_extents(exts, s0, s1, s2);\n+    auto sub_exts = std::subextents(exts, s0, s1, s2);\n     VERIFY(sub_exts.rank() == 2);\n     VERIFY(sub_exts.static_extent(0) == size_t(get<1>(s1) - get<0>(s1)));\n     VERIFY(sub_exts.static_extent(1) == dyn);\n@@ -50,7 +50,7 @@ template<typename Int>\n   test_from_int_like_as_scalar()\n   {\n     auto exts = std::extents<int, 3, 5>{};\n-    auto sub_exts = submdspan_extents(exts, Int(1), std::tuple{1, 3});\n+    auto sub_exts = std::subextents(exts, Int(1), std::tuple{1, 3});\n     VERIFY(sub_exts.rank() == 1);\n     VERIFY(sub_exts.static_extent(0) == dyn);\n     VERIFY(sub_exts.extent(0) == 2);\n@@ -61,7 +61,7 @@ template<template<int> typename Cw>\n   test_from_const_int()\n   {\n     auto exts = std::extents<int, 3, 5>{};\n-    auto sub_exts = submdspan_extents(exts, Cw<1>{}, std::tuple{1, 3});\n+    auto sub_exts = std::subextents(exts, Cw<1>{}, std::tuple{1, 3});\n     VERIFY(sub_exts.rank() == 1);\n     VERIFY(sub_exts.static_extent(0) == dyn);\n     VERIFY(sub_exts.extent(0) == 2);\n@@ -73,7 +73,7 @@ template<typename Int>\n   test_from_int_like_in_tuple()\n   {\n     auto exts = std::extents<int, 3, 5>{};\n-    auto sub_exts = submdspan_extents(exts, Int(1), std::tuple{Int(1), Int(3)});\n+    auto sub_exts = std::subextents(exts, Int(1), std::tuple{Int(1), Int(3)});\n     VERIFY(sub_exts.rank() == 1);\n     VERIFY(sub_exts.static_extent(0) == dyn);\n     VERIFY(sub_exts.extent(0) == 2);\n@@ -89,7 +89,7 @@ template<template<int> typename Cw>\n       auto s0 = 1;\n       auto s1 = std::strided_slice{0, 0, 0};\n       auto s2 = std::strided_slice{1, Cw<0>{}, 0};\n-      auto sub_exts = submdspan_extents(exts, s0, s1, s2);\n+      auto sub_exts = std::subextents(exts, s0, s1, s2);\n       VERIFY(sub_exts.rank() == 2);\n       VERIFY(sub_exts.static_extent(0) == dyn);\n       VERIFY(sub_exts.extent(0) == 0);\n@@ -100,7 +100,7 @@ template<template<int> typename Cw>\n       auto s0 = 1;\n       auto s1 = std::strided_slice{0, 2, Cw<1>{}};\n       auto s2 = std::strided_slice{1, Cw<2>{}, 1};\n-      auto sub_exts = submdspan_extents(exts, s0, s1, s2);\n+      auto sub_exts = std::subextents(exts, s0, s1, s2);\n       VERIFY(sub_exts.rank() == 2);\n       VERIFY(sub_exts.static_extent(0) == dyn);\n       VERIFY(sub_exts.extent(0) == 2);\n@@ -113,7 +113,7 @@ template<template<int> typename Cw>\n       auto s0 = 1;\n       auto s1 = std::strided_slice{1, Cw<4>{}, 2};\n       auto s2 = std::strided_slice{1, Cw<10>{}, Cw<3>{}};\n-      auto sub_exts = submdspan_extents(exts, s0, s1, s2);\n+      auto sub_exts = std::subextents(exts, s0, s1, s2);\n       VERIFY(sub_exts.rank() == 2);\n       VERIFY(sub_exts.static_extent(0) == dyn);\n       VERIFY(sub_exts.extent(0) == 2);\n@@ -125,7 +125,7 @@ template<template<int> typename Cw>\n       auto s0 = std::strided_slice(0, 3, 2);\n       auto s1 = std::strided_slice(1, 4, 2);\n       auto s2 = std::strided_slice(0, 7, 3);\n-      auto sub_exts = submdspan_extents(exts, s0, s1, s2);\n+      auto sub_exts = std::subextents(exts, s0, s1, s2);\n       VERIFY(sub_exts.rank() == 3);\n       VERIFY(sub_exts.extent(0) == 2);\n       VERIFY(sub_exts.extent(1) == 2);\ndiff --git a/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/submdspan_extents_neg.cc b/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/subextents_neg.cc\nsimilarity index 85%\nrename from libstdc++-v3/testsuite/23_containers/mdspan/submdspan/submdspan_extents_neg.cc\nrename to libstdc++-v3/testsuite/23_containers/mdspan/submdspan/subextents_neg.cc\nindex cf27c0c7e4d..c81a1383e3c 100644\n--- a/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/submdspan_extents_neg.cc\n+++ b/libstdc++-v3/testsuite/23_containers/mdspan/submdspan/subextents_neg.cc\n@@ -10,7 +10,7 @@ constexpr bool\n test_unrelated_stride_type()\n {\n   auto exts = std::extents(3, 5, 7);\n-  auto sub_exts = submdspan_extents(exts, 1, NotASlice{}, 2);  // { dg-error \"required from\" }\n+  auto sub_exts = subextents(exts, 1, NotASlice{}, 2);  // { dg-error \"required from\" }\n   return true;\n }\n static_assert(test_unrelated_stride_type());\n@@ -20,7 +20,7 @@ test_invalid_stride_zero()\n {\n   auto exts = std::extents(3, 5, 7);\n   auto s = std::strided_slice{0, 1, 0};\n-  auto sub_exts = submdspan_extents(exts, 1, s, 2);  // { dg-error \"expansion of\" }\n+  auto sub_exts = std::subextents(exts, 1, s, 2);  // { dg-error \"expansion of\" }\n   return true;\n }\n static_assert(test_invalid_stride_zero());\n@@ -30,7 +30,7 @@ constexpr bool\n test_out_of_bounds(const Slice& slice)\n {\n   auto exts = std::extents<uint16_t, 3, 5, 7>{};\n-  auto sub_exts = submdspan_extents(exts, 1, slice, 2);  // { dg-error \"expansion of\" }\n+  auto sub_exts = std::subextents(exts, 1, slice, 2);  // { dg-error \"expansion of\" }\n   return true;\n }\n static_assert(test_out_of_bounds(std::strided_slice{0, 6, 1}));  // { dg-error \"expansion of\" }\n",
    "prefixes": []
}