From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by sourceware.org (Postfix) with ESMTPS id E46ED385AC2D for ; Fri, 28 Oct 2022 14:56:20 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org E46ED385AC2D Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=redhat.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1666968980; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=SPTH/8sG+QsmyMSyVKJx8txPXjWdNCG/q3eDkDQWIP0=; b=B6rbhah1bpg5MXhTHABpcaZscHlwSpX0rLxb/AqzYArkciCG9kMn8pPpbnHB5Yf4Fm5MUl VKyo1InxX0qJaxhnhNacKTAME36npUzNzKxEyPM5rTrBnRm86HVDo+EcoTfCizGIHzkw7i PLS6Ao3EaG9o7F3jqJv/dQYY7ino9oc= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-499-V1gXHhcuMRGxF0fj49gfVw-1; Fri, 28 Oct 2022 10:56:17 -0400 X-MC-Unique: V1gXHhcuMRGxF0fj49gfVw-1 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.rdu2.redhat.com [10.11.54.6]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 9CAF1101A52A; Fri, 28 Oct 2022 14:56:16 +0000 (UTC) Received: from localhost (unknown [10.33.37.13]) by smtp.corp.redhat.com (Postfix) with ESMTP id 65F972166B26; Fri, 28 Oct 2022 14:56:16 +0000 (UTC) Date: Fri, 28 Oct 2022 15:56:15 +0100 From: Jonathan Wakely To: Arsen =?utf-8?Q?Arsenovi=C4=87?= Cc: gcc-patches@gcc.gnu.org, libstdc++@gcc.gnu.org Subject: Re: [PATCH] libstdc++: Make placeholders inline when inline variables are available Message-ID: References: <20221020145849.2459976-1-arsen@aarsen.me> MIME-Version: 1.0 In-Reply-To: <20221020145849.2459976-1-arsen@aarsen.me> X-Clacks-Overhead: GNU Terry Pratchett X-Scanned-By: MIMEDefang 3.1 on 10.11.54.6 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=utf-8; format=flowed Content-Disposition: inline Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-12.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_NONE,TXREP autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: On 20/10/22 16:58 +0200, Arsen Arsenović wrote: >This slightly lowers the dependency of generated code on libstdc++.so. Looks good, I'll test and push, thanks. >libstdc++-v3/ChangeLog: > > * include/std/functional: Make placeholders inline, if possible. >--- > libstdc++-v3/include/std/functional | 66 ++++++++++++++++------------- > 1 file changed, 37 insertions(+), 29 deletions(-) > >diff --git a/libstdc++-v3/include/std/functional b/libstdc++-v3/include/std/functional >index d22acaa3cb8..b396e8dbbdc 100644 >--- a/libstdc++-v3/include/std/functional >+++ b/libstdc++-v3/include/std/functional >@@ -285,35 +285,43 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION > * simplify this with variadic templates, because we're introducing > * unique names for each. > */ >- extern const _Placeholder<1> _1; >- extern const _Placeholder<2> _2; >- extern const _Placeholder<3> _3; >- extern const _Placeholder<4> _4; >- extern const _Placeholder<5> _5; >- extern const _Placeholder<6> _6; >- extern const _Placeholder<7> _7; >- extern const _Placeholder<8> _8; >- extern const _Placeholder<9> _9; >- extern const _Placeholder<10> _10; >- extern const _Placeholder<11> _11; >- extern const _Placeholder<12> _12; >- extern const _Placeholder<13> _13; >- extern const _Placeholder<14> _14; >- extern const _Placeholder<15> _15; >- extern const _Placeholder<16> _16; >- extern const _Placeholder<17> _17; >- extern const _Placeholder<18> _18; >- extern const _Placeholder<19> _19; >- extern const _Placeholder<20> _20; >- extern const _Placeholder<21> _21; >- extern const _Placeholder<22> _22; >- extern const _Placeholder<23> _23; >- extern const _Placeholder<24> _24; >- extern const _Placeholder<25> _25; >- extern const _Placeholder<26> _26; >- extern const _Placeholder<27> _27; >- extern const _Placeholder<28> _28; >- extern const _Placeholder<29> _29; >+#if __cpp_inline_variables >+# define _GLIBCXX_PLACEHOLDER inline >+#else >+# define _GLIBCXX_PLACEHOLDER extern >+#endif >+ >+ _GLIBCXX_PLACEHOLDER const _Placeholder<1> _1; >+ _GLIBCXX_PLACEHOLDER const _Placeholder<2> _2; >+ _GLIBCXX_PLACEHOLDER const _Placeholder<3> _3; >+ _GLIBCXX_PLACEHOLDER const _Placeholder<4> _4; >+ _GLIBCXX_PLACEHOLDER const _Placeholder<5> _5; >+ _GLIBCXX_PLACEHOLDER const _Placeholder<6> _6; >+ _GLIBCXX_PLACEHOLDER const _Placeholder<7> _7; >+ _GLIBCXX_PLACEHOLDER const _Placeholder<8> _8; >+ _GLIBCXX_PLACEHOLDER const _Placeholder<9> _9; >+ _GLIBCXX_PLACEHOLDER const _Placeholder<10> _10; >+ _GLIBCXX_PLACEHOLDER const _Placeholder<11> _11; >+ _GLIBCXX_PLACEHOLDER const _Placeholder<12> _12; >+ _GLIBCXX_PLACEHOLDER const _Placeholder<13> _13; >+ _GLIBCXX_PLACEHOLDER const _Placeholder<14> _14; >+ _GLIBCXX_PLACEHOLDER const _Placeholder<15> _15; >+ _GLIBCXX_PLACEHOLDER const _Placeholder<16> _16; >+ _GLIBCXX_PLACEHOLDER const _Placeholder<17> _17; >+ _GLIBCXX_PLACEHOLDER const _Placeholder<18> _18; >+ _GLIBCXX_PLACEHOLDER const _Placeholder<19> _19; >+ _GLIBCXX_PLACEHOLDER const _Placeholder<20> _20; >+ _GLIBCXX_PLACEHOLDER const _Placeholder<21> _21; >+ _GLIBCXX_PLACEHOLDER const _Placeholder<22> _22; >+ _GLIBCXX_PLACEHOLDER const _Placeholder<23> _23; >+ _GLIBCXX_PLACEHOLDER const _Placeholder<24> _24; >+ _GLIBCXX_PLACEHOLDER const _Placeholder<25> _25; >+ _GLIBCXX_PLACEHOLDER const _Placeholder<26> _26; >+ _GLIBCXX_PLACEHOLDER const _Placeholder<27> _27; >+ _GLIBCXX_PLACEHOLDER const _Placeholder<28> _28; >+ _GLIBCXX_PLACEHOLDER const _Placeholder<29> _29; >+ >+#undef _GLIBCXX_PLACEHOLDER > } > > /**