From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-vk1-xa33.google.com (mail-vk1-xa33.google.com [IPv6:2607:f8b0:4864:20::a33]) by sourceware.org (Postfix) with ESMTPS id 7AE913858D28 for ; Tue, 20 Jun 2023 13:20:03 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 7AE913858D28 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=cs.washington.edu Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=cs.washington.edu Received: by mail-vk1-xa33.google.com with SMTP id 71dfb90a1353d-45739737afcso1115431e0c.2 for ; Tue, 20 Jun 2023 06:20:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cs.washington.edu; s=goo201206; t=1687267202; x=1689859202; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=JR7lOQvlUx25EO7OCE0OUD9seibGUQb1CKLR/SHQHOY=; b=HzzYSAm2ijXJw8KFOfNWJS8jwg6eskDgyhC3ZcthndUsYVkezZZF+4rENvd0sVnnwJ zWNnVgIRwxvkseZd9fMwr5J3GmK1oWuxaIY8Rh6o91OI85IGhhBHot2tS637a2iUROHp a5ZheM13viA+zs9/3xETgCcDPZLnTu1cDkUxU= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1687267202; x=1689859202; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=JR7lOQvlUx25EO7OCE0OUD9seibGUQb1CKLR/SHQHOY=; b=l9TN0A1ij7l7YSWt+4qArwla1R5McG64bbdfdRjQ21N4j/nf3LXSuLE5uFv5DzNazX Xbs0FkjBRmhjgd9QWbECKxthsIXzv7/cD0UsPGoOf++dIBDf5hwCV/ED+nedK/0s6967 zkEIW2SuJnUu0XHQmCDHxQqShviMfn6lHOkZ4nCQZcZXNTAsvQ8qckTY7101CX706L/J BkoUmLmOihqOSGATvRmwAuz4FxBQCa4DGE0cx1b3F5J6QzvzD9fycaw5Ii2BMQBkijwx segxentjTgrcdwI1q4NAZLm3TxEiB0qHb0/1Yvq9gjZvfhbuqe+e+jKrvsGPeicJK3Li kCAw== X-Gm-Message-State: AC+VfDziyKVNcmAQ5ciPbHzfQyf8CcN/29Fw5ezjgIloV/jHmkmsmNiu oNxSVvhZsfaSERer+QtCFQfAe46+TEp2ZqNosNzNuOYc8uPBsPVkMKvmmw== X-Google-Smtp-Source: ACHHUZ4Kgz6laaknhVFMh4tOXk2Pd6aj2Xc4MNYT9C90fPVnsasXFyW1j5P9hBK1GY8dnM7/+5kPhjXSs6qhM0C222M= X-Received: by 2002:a05:6102:3174:b0:43b:159b:f2c5 with SMTP id l20-20020a056102317400b0043b159bf2c5mr2129196vsm.32.1687267202142; Tue, 20 Jun 2023 06:20:02 -0700 (PDT) MIME-Version: 1.0 References: <20230612224109.20749-1-kmatsui@cs.washington.edu> <20230612224909.21188-1-kmatsui@cs.washington.edu> In-Reply-To: From: Ken Matsui Date: Tue, 20 Jun 2023 06:19:46 -0700 Message-ID: Subject: Re: [PATCH v7 0/6] c++, libstdc++: get std::is_object to dispatch to new built-in traits To: gcc-patches@gcc.gnu.org Cc: libstdc++@gcc.gnu.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-3.3 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: Just a quick update, the benchmark code link has been updated and can now be accessed at https://github.com/ken-matsui/gcc-benches/blob/main/is_object.cc. I have also created a report file which can be found at https://github.com/ken-matsui/gcc-benches/blob/main/is_object.md. On Thu, Jun 15, 2023 at 3:49=E2=80=AFAM Ken Matsui wrote: > > Hi, > > For those curious about the performance improvements of this patch, I > conducted a benchmark that instantiates 256k specializations of > is_object_v based on Patrick's code. You can find the benchmark code > at this link: > > https://github.com/ken-matsui/gcc-benches/blob/main/is_object_benchmark.c= c > > On my computer, using the gcc HEAD of this patch for a release build, > the patch with -DUSE_BUILTIN took 64% less time and used 44-47% less > memory compared to not using it. > > Sincerely, > Ken Matsui > > On Mon, Jun 12, 2023 at 3:49=E2=80=AFPM Ken Matsui wrote: > > > > Hi, > > > > This patch series gets std::is_object to dispatch to built-in traits an= d > > implements the following built-in traits, on which std::object depends. > > > > * __is_reference > > * __is_function > > * __is_void > > > > std::is_object was depending on them with disjunction and negation. > > > > __not_<__or_, is_reference<_Tp>, is_void<_Tp>>>::type > > > > Therefore, this patch uses them directly instead of implementing an add= itional > > built-in trait __is_object, which makes the compiler slightly bigger an= d > > slower. > > > > __bool_constant > > > > This would instantiate only __bool_constant and __bool_constant, > > which can be mostly shared. That is, the purpose of built-in traits is > > considered as achieved. > > > > Changes in v7 > > > > * Removed an unnecessary new line. > > > > Ken Matsui (6): > > c++: implement __is_reference built-in trait > > libstdc++: use new built-in trait __is_reference for std::is_referenc= e > > c++: implement __is_function built-in trait > > libstdc++: use new built-in trait __is_function for std::is_function > > c++, libstdc++: implement __is_void built-in trait > > libstdc++: make std::is_object dispatch to new built-in traits > > > > gcc/cp/constraint.cc | 9 +++ > > gcc/cp/cp-trait.def | 3 + > > gcc/cp/semantics.cc | 12 ++++ > > gcc/testsuite/g++.dg/ext/has-builtin-1.C | 9 +++ > > gcc/testsuite/g++.dg/ext/is_function.C | 58 +++++++++++++++++++ > > gcc/testsuite/g++.dg/ext/is_reference.C | 34 +++++++++++ > > gcc/testsuite/g++.dg/ext/is_void.C | 35 +++++++++++ > > gcc/testsuite/g++.dg/tm/pr46567.C | 6 +- > > libstdc++-v3/include/bits/cpp_type_traits.h | 15 ----- > > libstdc++-v3/include/debug/helper_functions.h | 5 +- > > libstdc++-v3/include/std/type_traits | 51 ++++++++++++++++ > > 11 files changed, 216 insertions(+), 21 deletions(-) > > create mode 100644 gcc/testsuite/g++.dg/ext/is_function.C > > create mode 100644 gcc/testsuite/g++.dg/ext/is_reference.C > > create mode 100644 gcc/testsuite/g++.dg/ext/is_void.C > > > > -- > > 2.41.0 > >