[{"id":3684918,"web_url":"http://patchwork.ozlabs.org/comment/3684918/","msgid":"<CACb0b4ky=-zQhSuLD_Ert96OWHYR7tk0inZLpOipB46rbNSkhg@mail.gmail.com>","list_archive_url":null,"date":"2026-04-30T19:52:19","subject":"Re: [PATCH] libsdc++: Remove duplicated\n __mdspan::__is_constant_wrapper.","submitter":{"id":48004,"url":"http://patchwork.ozlabs.org/api/people/48004/","name":"Jonathan Wakely","email":"jwakely@redhat.com"},"content":"On Thu, 30 Apr 2026 at 19:19, Tomasz Kamiński <tkaminsk@redhat.com> wrote:\n>\n> Replaced it with std::__is_constant_wrapper_v from utility.\n>\n> libstdc++-v3/ChangeLog:\n>\n>         * include/std/mdspan: Replace eight spaces with tabs.\n>         (__mdspan::__is_constant_wrapper): Remove.\n>         (__mdspan::__acceptable_slice_type, __mdspan::__static_slice_extent)\n>         (__mdspan::__is_unit_stride_slice, __mdspan::__canonical_range_slice)\n>         (__mdspan::__check_inrange_index, __mdspan::__check_valid_index)\n>         (__mdspan::__check_valid_slice, std::submdspan): Replace\n>         __mdspan::__is_constant_wrapper with std::__is_constant_wrapper_v.\n> ---\n> Testing on x86_64-linux. *mdspan* test already passed.\n> OK for trunk?\n\nTypo for \"libstdc++\" in the subject line. OK with that fixed.\n\n\n>\n>  libstdc++-v3/include/std/mdspan | 69 +++++++++++++++------------------\n>  1 file changed, 31 insertions(+), 38 deletions(-)\n>\n> diff --git a/libstdc++-v3/include/std/mdspan b/libstdc++-v3/include/std/mdspan\n> index a3ab64633ac..5938bf09a94 100644\n> --- a/libstdc++-v3/include/std/mdspan\n> +++ b/libstdc++-v3/include/std/mdspan\n> @@ -838,7 +838,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION\n>\n>      template<typename _Mapping>\n>        constexpr bool __is_padded_mapping = __is_left_padded_mapping<_Mapping>\n> -        || __is_right_padded_mapping<_Mapping>;\n> +       || __is_right_padded_mapping<_Mapping>;\n>  #endif\n>\n>      template<typename _PaddedMapping>\n> @@ -904,13 +904,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION\n>             && std::cmp_less_equal(__value, __max);\n>        }\n>\n> -    template<typename _Tp>\n> -      constexpr bool __is_constant_wrapper = false;\n> -\n> -    template<_CwFixedValue _Xv, typename _Tp>\n> -      constexpr bool __is_constant_wrapper<constant_wrapper<_Xv, _Tp>>\n> -       = true;\n> -\n>      template<size_t _Index, typename _Extents>\n>        constexpr auto\n>        __extract_extent(const _Extents& __exts)\n> @@ -922,7 +915,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION\n>\n>      template<typename _Slice, typename _IndexType>\n>        concept __acceptable_slice_type = same_as<_Slice, full_extent_t>\n> -         || same_as<_Slice, _IndexType> || __is_constant_wrapper<_Slice>\n> +         || same_as<_Slice, _IndexType> || __is_constant_wrapper_v<_Slice>\n>           || __is_extent_slice<_Slice>;\n>\n>      template<typename _IndexType, typename... _Slices>\n> @@ -1003,7 +996,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION\n>           return _Extent;\n>         else if constexpr (same_as<_Slice, constant_wrapper<_IndexType(0)>>)\n>           return 0;\n> -       else if constexpr (__is_constant_wrapper<typename _Slice::extent_type>)\n> +       else if constexpr (__is_constant_wrapper_v<typename _Slice::extent_type>)\n>           return _Slice::extent_type::value;\n>         else\n>           return dynamic_extent;\n> @@ -1204,7 +1197,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION\n>\n>      template<typename _Slice>\n>        concept __is_unit_stride_slice = (__mdspan::__is_extent_slice<_Slice>\n> -         && __mdspan::__is_constant_wrapper<typename _Slice::stride_type>\n> +         && __is_constant_wrapper_v<typename _Slice::stride_type>\n>           && _Slice::stride_type::value == 1)\n>         || std::same_as<_Slice, full_extent_t>;\n>\n> @@ -1534,7 +1527,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION\n>        template<typename _OExtents>\n>         requires is_constructible_v<extents_type, _OExtents>\n>         constexpr explicit(!(extents_type::rank() == 0\n> -                            && is_convertible_v<_OExtents, extents_type>))\n> +                            && is_convertible_v<_OExtents, extents_type>))\n>         mapping(const layout_stride::mapping<_OExtents>& __other) noexcept\n>         : mapping(__other.extents(), __mdspan::__internal_ctor{})\n>         { __glibcxx_assert(*this == __other); }\n> @@ -1710,7 +1703,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION\n>        template<typename _OExtents>\n>         requires is_constructible_v<extents_type, _OExtents>\n>         constexpr explicit(!(extents_type::rank() == 0\n> -                            && is_convertible_v<_OExtents, extents_type>))\n> +                            && is_convertible_v<_OExtents, extents_type>))\n>         mapping(const layout_stride::mapping<_OExtents>& __other) noexcept\n>         : mapping(__other.extents(), __mdspan::__internal_ctor{})\n>         { __glibcxx_assert(*this == __other); }\n> @@ -3308,10 +3301,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION\n>           .extent = __span,\n>           .stride = cw<_IndexType(1)>\n>         };\n> -      else if constexpr (__is_constant_wrapper<_StrideType>)\n> -        {\n> +      else if constexpr (__is_constant_wrapper_v<_StrideType>)\n> +       {\n>           static_assert(_StrideType::value > 0);\n> -         if constexpr (__is_constant_wrapper<_SpanType>)\n> +         if constexpr (__is_constant_wrapper_v<_SpanType>)\n>             return extent_slice{\n>               .offset = __offset,\n>               .extent = cw<_IndexType(1 + (_SpanType::value - 1) / _StrideType::value)>,\n> @@ -3323,7 +3316,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION\n>               .extent = _IndexType(__span > 0 ? 1 + (__span - 1) / _StrideType::value : 0),\n>               .stride = __stride\n>             };\n> -        }\n> +       }\n>        else if (__span == 0 || __stride == 1)\n>         return extent_slice{\n>           .offset = __offset,\n> @@ -3331,7 +3324,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION\n>           .stride = _IndexType(1)\n>         };\n>        else\n> -        {\n> +       {\n>           __glibcxx_assert(__stride > 0);\n>           return extent_slice{\n>             .offset = __offset,\n> @@ -3386,7 +3379,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION\n>        __check_inrange_index(const extents<_IndexType, _Extent>& __ext,\n>                            const _OIndexType& __idx)\n>        {\n> -       if constexpr (__is_constant_wrapper<_OIndexType>\n> +       if constexpr (__is_constant_wrapper_v<_OIndexType>\n>                       && _Extent != dynamic_extent)\n>           {\n>             static_assert(_OIndexType::value >= 0);\n> @@ -3401,7 +3394,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION\n>        __check_valid_index(const extents<_IndexType, _Extent>& __ext,\n>                            const _OIndexType& __idx)\n>        {\n> -       if constexpr (__is_constant_wrapper<_OIndexType>\n> +       if constexpr (__is_constant_wrapper_v<_OIndexType>\n>                       && _Extent != dynamic_extent)\n>           {\n>             static_assert(_OIndexType::value >= 0);\n> @@ -3427,31 +3420,31 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION\n>                                     constant_wrapper<_IndexType(0)>>)\n>               __mdspan::__check_valid_index(__ext, __slice.offset);\n>             else if constexpr (is_same_v<typename _Slice::extent_type,\n> -                                        constant_wrapper<_IndexType(1)>>)\n> -              __mdspan::__check_inrange_index(__ext, __slice.offset);\n> -           else if constexpr (__is_constant_wrapper<typename _Slice::extent_type>)\n> +                                        constant_wrapper<_IndexType(1)>>)\n> +             __mdspan::__check_inrange_index(__ext, __slice.offset);\n> +           else if constexpr (__is_constant_wrapper_v<typename _Slice::extent_type>)\n>               {\n> -               __mdspan::__check_inrange_index(__ext, __slice.offset);\n> -               if constexpr (__is_constant_wrapper<typename _Slice::stride_type>)\n> +               __mdspan::__check_inrange_index(__ext, __slice.offset);\n> +               if constexpr (__is_constant_wrapper_v<typename _Slice::stride_type>)\n>                   static_assert(_Slice::stride_type::value > 0);\n>                 else\n>                   __glibcxx_assert(__slice.stride > 0);\n>\n>                 if constexpr (_Extent != dynamic_extent\n> -                    && __is_constant_wrapper<typename _Slice::offset_type>)\n> -                  static_assert(std::cmp_greater_equal(\n> +                    && __is_constant_wrapper_v<typename _Slice::offset_type>)\n> +                 static_assert(std::cmp_greater_equal(\n>                     _Extent - _Slice::offset_type::value,\n>                     _Slice::extent_type::value));\n>                 if constexpr (_Extent != dynamic_extent\n> -                    && __is_constant_wrapper<typename _Slice::stride_type>)\n> -                  static_assert(std::cmp_greater(\n> +                    && __is_constant_wrapper_v<typename _Slice::stride_type>)\n> +                 static_assert(std::cmp_greater(\n>                     _Extent,\n>                     (_Slice::extent_type::value - 1) * _Slice::stride_type::value));\n>\n>                 if constexpr (_Extent != dynamic_extent\n> -                    && __is_constant_wrapper<typename _Slice::offset_type>\n> -                    && __is_constant_wrapper<typename _Slice::stride_type>)\n> -                  static_assert(std::cmp_greater(\n> +                    && __is_constant_wrapper_v<typename _Slice::offset_type>\n> +                    && __is_constant_wrapper_v<typename _Slice::stride_type>)\n> +                 static_assert(std::cmp_greater(\n>                     _Extent - _Slice::offset_type::value,\n>                     (_Slice::extent_type::value - 1) * _Slice::stride_type::value));\n>                 else\n> @@ -3460,18 +3453,18 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION\n>                     (_Slice::extent_type::value - 1) * __slice.stride));\n>               }\n>             else if constexpr (is_same_v<typename _Slice::stride_type,\n> -                                         constant_wrapper<_IndexType(1)>>)\n> +                                        constant_wrapper<_IndexType(1)>>)\n>               {\n> -               __mdspan::__check_valid_index(__ext, __slice.offset);\n> +               __mdspan::__check_valid_index(__ext, __slice.offset);\n>                 __glibcxx_assert(std::cmp_greater_equal(\n>                   __ext.extent(0) - __slice.offset,\n>                   __slice.extent));\n> -              }\n> +             }\n>             else if (__slice.extent == 0)\n>               __mdspan::__check_valid_index(__ext, __slice.offset);\n>             else\n>               {\n> -               __glibcxx_assert(__slice.offset < __ext.extent(0));\n> +               __glibcxx_assert(__slice.offset < __ext.extent(0));\n>                 __glibcxx_assert(__slice.extent == 1 || __slice.stride > 0);\n>                 __glibcxx_assert(__slice.extent == 1 || std::cmp_greater(\n>                   __ext.extent(0) - __slice.offset,\n> @@ -3479,7 +3472,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION\n>               }\n>           }\n>         else if constexpr (!is_same_v<_Slice, full_extent_t>)\n> -          __mdspan::__check_inrange_index(__ext, __slice);\n> +         __mdspan::__check_inrange_index(__ext, __slice);\n>        }\n>\n>      template<typename _Extents, typename... _Slices>\n> @@ -3548,7 +3541,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION\n>            typename _Accessor, typename... _RawSlices>\n>      requires (sizeof...(_RawSlices) == _Extents::rank()\n>         && __mdspan::__sliceable_mapping<typename _Layout::template mapping<_Extents>,\n> -                                        __mdspan::__full_extent_t<_RawSlices>...>)\n> +                                        __mdspan::__full_extent_t<_RawSlices>...>)\n>      constexpr auto\n>      submdspan(\n>         const mdspan<_ElementType, _Extents, _Layout, _Accessor>& __md,\n> --\n> 2.54.0\n>","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=FCs1acor;\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=FCs1acor","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 4g64bT5hLbz1yHZ\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 01 May 2026 05:53:09 +1000 (AEST)","from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id F0B844BB3BF4\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 30 Apr 2026 19:53:07 +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 BA29F42D3769\n for <gcc-patches@gcc.gnu.org>; Thu, 30 Apr 2026 19:52:38 +0000 (GMT)","from mail-yx1-f71.google.com (mail-yx1-f71.google.com\n [74.125.224.71]) by relay.mimecast.com with ESMTP with STARTTLS\n (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n us-mta-90-DoBqdkymMoGFAf1H9d0B3A-1; Thu, 30 Apr 2026 15:52:37 -0400","by mail-yx1-f71.google.com with SMTP id\n 956f58d0204a3-651cc9f2261so2880149d50.3\n for <gcc-patches@gcc.gnu.org>; Thu, 30 Apr 2026 12:52:37 -0700 (PDT)"],"DKIM-Filter":["OpenDKIM Filter v2.11.0 sourceware.org F0B844BB3BF4","OpenDKIM Filter v2.11.0 sourceware.org BA29F42D3769"],"DMARC-Filter":"OpenDMARC Filter v1.4.2 sourceware.org BA29F42D3769","ARC-Filter":"OpenARC Filter v1.0.0 sourceware.org BA29F42D3769","ARC-Seal":"i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1777578758; cv=none;\n b=jMH+Ry/FcQeRuANpWIDxH+oegzXwWliv+nmkh1cX6P9B4rIJ5mOTpk+6zx5VxkBegGqX4dfXs8Lqu03K0sGQNdWesQGJNtqtcChQIshxSFZk0YvXNAy2/U4a2qQrRy7EY2S2i2VMSPRT1CliZGw9cJEhtQWd6tIXe6b1FKxqf3w=","ARC-Message-Signature":"i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1777578758; c=relaxed/simple;\n bh=HxYBaKH16hc7Kibcq3yrFxE2Kpc2ccMTkAco+rwDyWs=;\n h=DKIM-Signature:MIME-Version:From:Date:Message-ID:Subject:To;\n b=ZYAxQbykyAoAnb2xIsgWMV+yNl+A99MylSUy78RnNFy1ipFgez/EHe/DVvISHWyF99d1gJEitizTL5RycFiDD/fj6YhuLukiSzLjqgXoHDKNT4+gkAY7AK+b1kG09pGI3HeVfjjFiojt6RvqyKHGB0HcxwGQYMHewYLFZEpTTM0=","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=1777578758;\n h=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n to:to:cc:cc:mime-version:mime-version:content-type:content-type:\n content-transfer-encoding:content-transfer-encoding:\n in-reply-to:in-reply-to:references:references;\n bh=nGWZ9zVKzcHzyjk+xl6T/nyZL6BtPXFO1/3B2IlID3A=;\n b=FCs1acorXUcovIYvTO/UeDGRrhRmspfBZGJwC9DWyZbQUYvt9wiVLPZTBzzjgZGgNs9y02\n eiE9KTe99Y+DOtBOxjUHOgjKyvdel23phajD1Sucuq8eCU3BK3KQ3npbzyy/6z7yM2IncB\n KuxuE7vyVlU1lbREsB+NbzuCPku6BME=","X-MC-Unique":"DoBqdkymMoGFAf1H9d0B3A-1","X-Mimecast-MFC-AGG-ID":"DoBqdkymMoGFAf1H9d0B3A_1777578756","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1777578756; x=1778183556;\n h=content-transfer-encoding:cc:to:subject:message-id:date:from\n :in-reply-to:references:mime-version:x-gm-gg:x-gm-message-state:from\n :to:cc:subject:date:message-id:reply-to;\n bh=nGWZ9zVKzcHzyjk+xl6T/nyZL6BtPXFO1/3B2IlID3A=;\n b=N/yDLrbO9414b14m9cq+SiNQ3ankIaK3DpUwFt1a0Wxjs2n9IYv7XgBKGMIr3EudpJ\n QL6j83Q5/CLBDgQv3Z3yTgaUpHWWKSPgK/gC5JV/5eFUV+iIAIm0ZbMK5rFMoqLUAmIc\n uwCA/hGQzXahVBr2m9KTiTdI9ZGBvkhDwJGAx3ZDYIj79wna/WS4rBlRSRDYnI8ROvhj\n vAMrpRmhkfmezStZKVaB2m4F5t+X18jIpTxeMk55GYD69np22TveKnkQYxzSlf55LvPw\n JPEL2rkLqzbTtOW5fJMiH/Mnr9DvZVtXSILcH7jfWxO78o55DLjVQYd4qeKS6SyhG+Xb\n FZzA==","X-Forwarded-Encrypted":"i=1;\n AFNElJ9QKbuzK6V0sBQhuMFnk0tPuxQ3TEUC2l40yyYZN0kUR7dfmDXbG5zSn1yIvOqsEIVIIMp7/TfpPyHbNQ==@gcc.gnu.org","X-Gm-Message-State":"AOJu0Yw4n9PvX4XlnYAFg9+s9HDsyD4qVDTujzc1DiMJfyYH0ZHQbD5I\n VRXZPM50ukGTxxonGUypm7x8buYjePE25V1G+W6BdVA6j14sj0A6b3rGVus7Cq58UlGDQzWPbBJ\n Uwq7EJzJqY9ODn3+dJQHHGze5w/UC6/XpdpzzqE+fE2SGFBdj2fWBSwoi7ZWYcJ7E0qv8eyoRlc\n 7SUFND3xmZzM7RIFi14CkMZp8IzqhamDV3igf21D6/bg==","X-Gm-Gg":"AeBDietiznlWpgmbN89cIq6dlwcQvQfUztieCrL8hIoALUNqIjFe2xudcR+u1RaZE1u\n TyDMDJXGedbahhNMXwsT8bH+Nw9mpgVr8Pi2Yg01ZD9toHD71amhno88/v1mjyXnBuo7wd7eXg5\n Yu81zpsDgOfEPYh2Xcai7Xivsm7k25p7B+5SIldQz0DlSTE6FIwtGmBtn10i0Lqcu9XO+YN97Qu\n uCnsy6eFaFzyG4xBWMN+lVwMpIj9EkmFyLmwl8SJWgXjuLLetJlUzmf32YgbebWc+h25zbmLJUZ\n dA==","X-Received":["by 2002:a05:690e:1556:10b0:650:16fb:e7e0 with SMTP id\n 956f58d0204a3-65c30520463mr206606d50.12.1777578756302;\n Thu, 30 Apr 2026 12:52:36 -0700 (PDT)","by 2002:a05:690e:1556:10b0:650:16fb:e7e0 with SMTP id\n 956f58d0204a3-65c30520463mr206587d50.12.1777578755733; Thu, 30 Apr 2026\n 12:52:35 -0700 (PDT)"],"MIME-Version":"1.0","References":"<20260430181908.661233-1-tkaminsk@redhat.com>","In-Reply-To":"<20260430181908.661233-1-tkaminsk@redhat.com>","From":"Jonathan Wakely <jwakely@redhat.com>","Date":"Thu, 30 Apr 2026 20:52:19 +0100","X-Gm-Features":"AVHnY4K9dQNYp_3baofS8s1SFiBujQeMJkFBDHLm18duSVoDuwOWfzOOM-Wxd6g","Message-ID":"\n <CACb0b4ky=-zQhSuLD_Ert96OWHYR7tk0inZLpOipB46rbNSkhg@mail.gmail.com>","Subject":"Re: [PATCH] libsdc++: Remove duplicated\n __mdspan::__is_constant_wrapper.","To":"=?utf-8?q?Tomasz_Kami=C5=84ski?= <tkaminsk@redhat.com>","Cc":"libstdc++@gcc.gnu.org, gcc-patches@gcc.gnu.org","X-Mimecast-Spam-Score":"0","X-Mimecast-MFC-PROC-ID":"bIOBVoqNwmUSzuItwUJEYj2CeQh25uo76j9loedp8Hc_1777578756","X-Mimecast-Originator":"redhat.com","Content-Type":"text/plain; charset=\"UTF-8\"","Content-Transfer-Encoding":"quoted-printable","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"}}]