From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-vs1-xe31.google.com (mail-vs1-xe31.google.com [IPv6:2607:f8b0:4864:20::e31]) by sourceware.org (Postfix) with ESMTPS id 7B1483858D3C for ; Thu, 15 Jun 2023 10:49:46 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 7B1483858D3C 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-vs1-xe31.google.com with SMTP id ada2fe7eead31-43f30d3f8f4so953880137.2 for ; Thu, 15 Jun 2023 03:49:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cs.washington.edu; s=goo201206; t=1686826186; x=1689418186; 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=kQ+FBcE15j5Rbwk41QiSL8Uz6kC6wjKsQLszstfRUYE=; b=mAtx6qp5ZQ2YuqvsgBexFYBY/+FaR7kTvH3688dyV3zSTUU5qd/9VRuOzym5cnGxRS 4cZxU5LSc6V/0Mcgo4Ebd5SQ9BjdRthwPCPAJnIC8RWUn7RrX6+hUZmRjgj/zxteOW6I x9wx6sluX8SltmkdhJx61BITcZCG+ChSGTeww= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1686826186; x=1689418186; 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=kQ+FBcE15j5Rbwk41QiSL8Uz6kC6wjKsQLszstfRUYE=; b=hbvgzZl9pDBPmSN3I7hLb4UlXK7Dhp3wtFtRJM6Nbhi5I71P16f8SnasCHC5S6ScS6 Vf5XQKYMWEFmjj380w+z+1zb/85H9v4+EJPn0ny/cMVQf/Tw949k+Vyl6QC4+hG9DZP3 Jf0rbcikb4znKDAOPoK9flKH4XnEUQn75gvXkNstkQnS6UKNIjquqs2tmjKIY57/qbcS HDq5c7BK/bYM9vSS8GxW9o+fsGbmOUJjsnRGLXsHZEetNBGjhwy5B5tANV9+BcXFoqoM ykQ0+TDD6OAn7xjxJFeo/D9ORGJ7/6ODRG6/Ys1odzen+d1X1apZwxUFyfkyZhZY7Def H6dg== X-Gm-Message-State: AC+VfDxQMfj7In9mfZ4pyvLrxiVt7S0l/b1tRCOG6R9wE1cAHtKMM0Yf I0xoCFUrueZN1sDBNF1euSAcL+TTQe2i+DhrU1WIfQ== X-Google-Smtp-Source: ACHHUZ4QNQpBsJr/9l48+gwZmQ1d4k26kjV3Vpjf46Ixb/bBujHQ1BHqb/m0ouBw6SJYp8RByWgYSe2jvtsakPfemk0= X-Received: by 2002:a67:b607:0:b0:43f:6052:ccd with SMTP id d7-20020a67b607000000b0043f60520ccdmr5759vsm.33.1686826185798; Thu, 15 Jun 2023 03:49:45 -0700 (PDT) MIME-Version: 1.0 References: <20230612224109.20749-1-kmatsui@cs.washington.edu> <20230612224909.21188-1-kmatsui@cs.washington.edu> In-Reply-To: <20230612224909.21188-1-kmatsui@cs.washington.edu> From: Ken Matsui Date: Thu, 15 Jun 2023 03:49:35 -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.6 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: 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.cc 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 and > 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 addit= ional > built-in trait __is_object, which makes the compiler slightly bigger and > 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_reference > 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 >