From patchwork Thu Feb 15 15:20:24 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ken Matsui X-Patchwork-Id: 201558 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:b825:b0:106:860b:bbdd with SMTP id da37csp477863dyb; Thu, 15 Feb 2024 07:30:45 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCXuqfdncqyDjzDHz7u8TDrpspA8sWUW9ce08pePYFK7MWWoFGkxbZoROdzZ9jaPeiuLo7R9P0gRsWRDaYJETt8wtv/1+Q== X-Google-Smtp-Source: AGHT+IH+nuzFzhG4DASQz28mNup0Kqi9PTPjBFEyGMcKhkK7wRBdiZrHBExX+/V72xrKzJNRI9P0 X-Received: by 2002:ac8:5807:0:b0:42c:64fa:604c with SMTP id g7-20020ac85807000000b0042c64fa604cmr2390109qtg.2.1708011045362; Thu, 15 Feb 2024 07:30:45 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1708011045; cv=pass; d=google.com; s=arc-20160816; b=na1tTxsNYXec54TF2xXh9NVfZgD8+8fO4x4L7soBokPP3smsBL0UjbUqRkAzPsFU+w d/eWIozFDcWwgX70Gy8SwIiFtTI8HwObtuTeMJAiAxui+Z7QvoZK6pQYTNWUT7nGK8nU N/zo/JuRi4NfmyEYtghRd4UebOIqAMQZukF21oBaMFzKtzCv9ALcKBtTpXGKIZuq83qW 1L8CaXb0yu4WJD7jyYWXdFBfRii0+7ffsSU5eBmN8UllURXL22tf+U4pz/QMFMssK7GB FBwOhjeWlzBamYUqOjG/zMGUyAOTq5mHjxGklFqKalMW4chfd5y3pdUUD7lObQGL7Kp2 Vudw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:arc-filter:dmarc-filter:delivered-to:dkim-signature :dkim-filter; bh=GTKTOpbdxQUd54lFPtAoTzBLrBKclYCGjhvbDb59UPk=; fh=kSSy/oyUXqQD15FLeKdymIgDBFPFITPA1Gj52CNOxRQ=; b=YcMjHtQtGscOqFt25V9/ryI7GpuOoHLjM1AHPtmIirLT6BsqRGAWQrhVDuqmz4YCVy xtQ9MRiGgfcmZ+j7adJ84v6RbY3OOgsgHR5uBEVlLRKVu/g9tE9090RF652v5oCfD3kB jJ4xLqtPu9fqSIxhxyZYSRISFR16Q/CfampKKOWBt3FfDvaJD1NIkrAuTw8wlP5XsTVj a3cB3jAFvGg01jokgzp6gYRLwCAr1r8uNk1uSA/VCuONysYZsTZtmdhhnULdPwB/p3pv 76Sp+t4CbiYuGDDz6P+ua/KE0VOhMMOkM36BHMNJ0FAYU3tGSPEprkvh803XJzXZjNTN UjAQ==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=o9YsIQvY; arc=pass (i=1); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from server2.sourceware.org (server2.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id k18-20020ac85fd2000000b0042c6b463bf2si1730688qta.671.2024.02.15.07.30.45 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Feb 2024 07:30:45 -0800 (PST) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) client-ip=8.43.85.97; Authentication-Results: mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=o9YsIQvY; arc=pass (i=1); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id E0EA9384CB95 for ; Thu, 15 Feb 2024 15:30:44 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org E0EA9384CB95 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1708011044; bh=GTKTOpbdxQUd54lFPtAoTzBLrBKclYCGjhvbDb59UPk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From; b=o9YsIQvYMAQiIGn42592cv2HOnPbny0IrK6IgU3RBGKvC+jrgxOVhvXs+XI8FYYQ0 Buw2HTdLk3O42pblM1FZwi3WwJKJymEkTF6kLl03HoaP7F6dlLPx9xbNzObx1lLzhO DpaXveTWzzshVFqJoJsBi5tx9yAfNs9ayXlQjmvM= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mx0b-00641c01.pphosted.com (mx0b-00641c01.pphosted.com [205.220.177.146]) by sourceware.org (Postfix) with ESMTPS id 25B7B38654B2; Thu, 15 Feb 2024 15:21:16 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 25B7B38654B2 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=gcc.gnu.org Authentication-Results: sourceware.org; spf=fail smtp.mailfrom=gcc.gnu.org ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 25B7B38654B2 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=205.220.177.146 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1708010484; cv=none; b=RybNAOx4f9R/aro/NCxBrZvmVWuERQvZEbfK2g3hgKvvnvFBR0O+RlZZNkr4yiJBALLJ5wfSL4QT5FC1L7u151MXLoyhatowTV2diCTao4f7wbrq98sJJoPktuHK47WjPgkM4m7gQ/mtIDy/cfHUp6H2A6CgJ7nVimoe5Sy2pZg= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1708010484; c=relaxed/simple; bh=dKDIr5+Bu2onDagYyJ58A3/vAkI3qrotK5wG5bF1Tww=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=PD7A9vTEZHfrN5w0RL7TfStKrr+BjtTvKwsZ0NU+uIYZ/zOZx/7Vy8QLf1Mf66U4Un8c9v1dCwQXmtUSt31GZYDcCOx0ohPZv4ff1iD/8Vp3QeiuZ4haHZ9vJ/SJcVam5YY89cefP9dMqisDf8W2jWKW/HMEyUA68oeuhKdl7bw= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from pps.filterd (m0247480.ppops.net [127.0.0.1]) by mx0a-00641c01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 41FFIqm8030671; Thu, 15 Feb 2024 15:21:15 GMT Received: from mxout21.s.uw.edu (mxout21.s.uw.edu [140.142.32.139]) by mx0a-00641c01.pphosted.com (PPS) with ESMTPS id 3w950xwbym-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 15 Feb 2024 15:21:15 +0000 Received: from smtp.washington.edu (smtp.washington.edu [140.142.234.157]) by mxout21.s.uw.edu (8.14.4+UW20.07/8.14.4+UW24.02) with ESMTP id 41FFKkp2013146 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 15 Feb 2024 07:20:46 -0800 X-Auth-Received: from kmatsui-ThinkPad-X1-Carbon-Gen-9.dhcp4.washington.edu ([10.154.74.143]) (authenticated authid=kmatsui) by smtp.washington.edu (8.16.1+UW21.10/8.14.4+UW24.02) with ESMTPSA id 41FFKkgl029956 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 15 Feb 2024 07:20:46 -0800 X-UW-Orig-Sender: kmatsui@smtp.washington.edu From: Ken Matsui To: gcc-patches@gcc.gnu.org Cc: libstdc++@gcc.gnu.org, Ken Matsui Subject: [PATCH v5 01/14] c++: Implement __add_pointer built-in trait Date: Thu, 15 Feb 2024 07:20:24 -0800 Message-ID: <20240215152037.720162-1-kmatsui@gcc.gnu.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240215045258.3025806-1-kmatsui@gcc.gnu.org> References: <20240215045258.3025806-1-kmatsui@gcc.gnu.org> MIME-Version: 1.0 X-Proofpoint-GUID: 5S-NRsR9dPaetxockAsz-VsTeNed5FYF X-Proofpoint-ORIG-GUID: 5S-NRsR9dPaetxockAsz-VsTeNed5FYF X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-02-15_14,2024-02-14_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 bulkscore=0 mlxscore=0 mlxlogscore=659 impostorscore=0 clxscore=1034 priorityscore=1501 suspectscore=0 phishscore=0 lowpriorityscore=0 malwarescore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2311290000 definitions=main-2402150123 X-Spam-Status: No, score=-13.3 required=5.0 tests=BAYES_00, GIT_PATCH_0, JMQ_SPF_NEUTRAL, KAM_DMARC_STATUS, RCVD_IN_DNSWL_LOW, SPF_HELO_NONE, SPF_NEUTRAL, 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 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1790874693629428413 X-GMAIL-MSGID: 1790979389847827184 This patch implements built-in trait for std::add_pointer. gcc/cp/ChangeLog: * cp-trait.def: Define __add_pointer. * semantics.cc (finish_trait_type): Handle CPTK_ADD_POINTER. gcc/testsuite/ChangeLog: * g++.dg/ext/has-builtin-1.C: Test existence of __add_pointer. * g++.dg/ext/add_pointer.C: New test. Signed-off-by: Ken Matsui --- gcc/cp/cp-trait.def | 1 + gcc/cp/semantics.cc | 9 ++++++ gcc/testsuite/g++.dg/ext/add_pointer.C | 39 ++++++++++++++++++++++++ gcc/testsuite/g++.dg/ext/has-builtin-1.C | 3 ++ 4 files changed, 52 insertions(+) create mode 100644 gcc/testsuite/g++.dg/ext/add_pointer.C diff --git a/gcc/cp/cp-trait.def b/gcc/cp/cp-trait.def index 394f006f20f..cec385ee501 100644 --- a/gcc/cp/cp-trait.def +++ b/gcc/cp/cp-trait.def @@ -48,6 +48,7 @@ #define DEFTRAIT_TYPE_DEFAULTED #endif +DEFTRAIT_TYPE (ADD_POINTER, "__add_pointer", 1) DEFTRAIT_EXPR (HAS_NOTHROW_ASSIGN, "__has_nothrow_assign", 1) DEFTRAIT_EXPR (HAS_NOTHROW_CONSTRUCTOR, "__has_nothrow_constructor", 1) DEFTRAIT_EXPR (HAS_NOTHROW_COPY, "__has_nothrow_copy", 1) diff --git a/gcc/cp/semantics.cc b/gcc/cp/semantics.cc index 57840176863..8dc975495a8 100644 --- a/gcc/cp/semantics.cc +++ b/gcc/cp/semantics.cc @@ -12760,6 +12760,15 @@ finish_trait_type (cp_trait_kind kind, tree type1, tree type2, switch (kind) { + case CPTK_ADD_POINTER: + if (FUNC_OR_METHOD_TYPE_P (type1) + && (type_memfn_quals (type1) != TYPE_UNQUALIFIED + || type_memfn_rqual (type1) != REF_QUAL_NONE)) + return type1; + if (TYPE_REF_P (type1)) + type1 = TREE_TYPE (type1); + return build_pointer_type (type1); + case CPTK_REMOVE_CV: return cv_unqualified (type1); diff --git a/gcc/testsuite/g++.dg/ext/add_pointer.C b/gcc/testsuite/g++.dg/ext/add_pointer.C new file mode 100644 index 00000000000..c405cdd0feb --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/add_pointer.C @@ -0,0 +1,39 @@ +// { dg-do compile { target c++11 } } + +#define SA(X) static_assert((X),#X) + +class ClassType { }; + +SA(__is_same(__add_pointer(int), int*)); +SA(__is_same(__add_pointer(int*), int**)); +SA(__is_same(__add_pointer(const int), const int*)); +SA(__is_same(__add_pointer(int&), int*)); +SA(__is_same(__add_pointer(ClassType*), ClassType**)); +SA(__is_same(__add_pointer(ClassType), ClassType*)); +SA(__is_same(__add_pointer(void), void*)); +SA(__is_same(__add_pointer(const void), const void*)); +SA(__is_same(__add_pointer(volatile void), volatile void*)); +SA(__is_same(__add_pointer(const volatile void), const volatile void*)); + +void f1(); +using f1_type = decltype(f1); +using pf1_type = decltype(&f1); +SA(__is_same(__add_pointer(f1_type), pf1_type)); + +void f2() noexcept; // PR libstdc++/78361 +using f2_type = decltype(f2); +using pf2_type = decltype(&f2); +SA(__is_same(__add_pointer(f2_type), pf2_type)); + +using fn_type = void(); +using pfn_type = void(*)(); +SA(__is_same(__add_pointer(fn_type), pfn_type)); + +SA(__is_same(__add_pointer(void() &), void() &)); +SA(__is_same(__add_pointer(void() & noexcept), void() & noexcept)); +SA(__is_same(__add_pointer(void() const), void() const)); +SA(__is_same(__add_pointer(void(...) &), void(...) &)); +SA(__is_same(__add_pointer(void(...) & noexcept), void(...) & noexcept)); +SA(__is_same(__add_pointer(void(...) const), void(...) const)); + +SA(__is_same(__add_pointer(void() __restrict), void() __restrict)); diff --git a/gcc/testsuite/g++.dg/ext/has-builtin-1.C b/gcc/testsuite/g++.dg/ext/has-builtin-1.C index 02b4b4d745d..56e8db7ac32 100644 --- a/gcc/testsuite/g++.dg/ext/has-builtin-1.C +++ b/gcc/testsuite/g++.dg/ext/has-builtin-1.C @@ -2,6 +2,9 @@ // { dg-do compile } // Verify that __has_builtin gives the correct answer for C++ built-ins. +#if !__has_builtin (__add_pointer) +# error "__has_builtin (__add_pointer) failed" +#endif #if !__has_builtin (__builtin_addressof) # error "__has_builtin (__builtin_addressof) failed" #endif From patchwork Thu Feb 15 15:20:25 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ken Matsui X-Patchwork-Id: 201548 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:b825:b0:106:860b:bbdd with SMTP id da37csp474189dyb; Thu, 15 Feb 2024 07:24:59 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCVN+OmxpAvSHP4a0H7XgiJIUgwntEve0Q0JQTNCZjZFzjuZns9CxpAH84ShAIhd7p4AG2FL5DarX9kMuNp+iIJ2E648Eg== X-Google-Smtp-Source: AGHT+IF/nl0Eh5qvZ2pfTZmfoKBE59R1Is6LCnafR5TGpVF3HV0eVR4Jz6gaXGtXbc/wC3FyfoSG X-Received: by 2002:a05:622a:1048:b0:42b:ff78:2033 with SMTP id f8-20020a05622a104800b0042bff782033mr2607102qte.56.1708010699306; Thu, 15 Feb 2024 07:24:59 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1708010699; cv=pass; d=google.com; s=arc-20160816; b=Drk4nweLvvtgd7cyWpJ1iyxC+n8M8gBAqWIvOJHcoFena/LuMcsbLMkILKQkSJ/9ZH vpRt6/F4D5sLPpO8S2A/NJpwsiQvxK7EFE2pI5S5yemtkfrl/JmXR1fWEN6svpKIGpFJ W53qHmaQI9LJGvW9BaEm7hZrhsgUNZtNFYFzNRjfwnYtE6hP5mxq2r9b65zwnzAZ7ag4 ZRHGkj3VLvN283A2GbpCdGBBEgy/R+D9J07GQih6um1WzVv5cvMq0GrZZvNUeDmnaa06 2XC1zXBXHWStGnfN8wD81fN1q2jQSjeNeBp5zOBOpo2yE8kTiuIMbGU7bjD2Y+fTrXAy Jfdg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:arc-filter:dmarc-filter:delivered-to:dkim-signature :dkim-filter; bh=piDE3AgxzrW0dXa2e3uQh2wEapv7CFxKuS7kgH2unj0=; fh=kSSy/oyUXqQD15FLeKdymIgDBFPFITPA1Gj52CNOxRQ=; b=rzmkRoGWPU45pd2VqkXQHYpl4ex/L5qPiCFzk07WYGiuNVIhxpgGiL13eN1bZzd37f BydDUz2vrE9tl++Nsw9wO3C819cLiGPOF0Aks0ncDwC1BjfUUtLVwa/UwQahhOSnpBiZ TtB6VjbjswQOhQELWCtDbS2JSH8NA7AtyGMFQYAh2y386INgt1++naq6FtiiGCuHCXXr QL1O4bpI1dVi9y/4LFl1L9beNE7CvHZQdJaAfeJ3vTcIfMcOBGS6Tp7aXi74SAhCFyJK yTjxb+ofiwmZcus1mvXRbQiz2uCsLM+wdJiKDskSnBldFZz41LF8ZvovTauf7+esvGUc L4mg==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b="ZsjLgp/C"; arc=pass (i=1); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from server2.sourceware.org (server2.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id o13-20020a05622a138d00b0042c28da72e2si1671023qtk.341.2024.02.15.07.24.59 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Feb 2024 07:24:59 -0800 (PST) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) client-ip=8.43.85.97; Authentication-Results: mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b="ZsjLgp/C"; arc=pass (i=1); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id A5E2F384CBAD for ; Thu, 15 Feb 2024 15:24:58 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org A5E2F384CBAD DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1708010698; bh=piDE3AgxzrW0dXa2e3uQh2wEapv7CFxKuS7kgH2unj0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From; b=ZsjLgp/C7NRDyTwQ+/HJxuK3FKdZM32ObD+5y3+VQ5Fn/rXpKSbagO1N0YKvsTfil VDZlgm5QCqhVC54hLavCtuhboKAw1Md7LN+w24YsVDnELy037XhsLdb+xqLrvRp6AD OzrAxVobDzl3FLtWHBsOAJJ8ul7/XFRXLfaqgxhY= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mx0a-00641c01.pphosted.com (mx0a-00641c01.pphosted.com [205.220.165.146]) by sourceware.org (Postfix) with ESMTPS id A135B3865C24; Thu, 15 Feb 2024 15:21:09 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org A135B3865C24 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=gcc.gnu.org Authentication-Results: sourceware.org; spf=fail smtp.mailfrom=gcc.gnu.org ARC-Filter: OpenARC Filter v1.0.0 sourceware.org A135B3865C24 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=205.220.165.146 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1708010476; cv=none; b=DngvT8khl0FXSzMHMLs5oruch5FlCjQc1m9jwnfpHNR+n9WBjrjrtJQPw3QMtt8ydxueuVGZryBtMaOy2iRmweXp6dS4ujgBH0gU52/FohyLCwO/56PH5qzxrDTiT0YZleFuRo/Ho3YXLyFLFcF/fASXHxsUpeMoR0ykEPNwgqQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1708010476; c=relaxed/simple; bh=mgSd9TEezsOin328Daikj7GhRV0O1ne8sDSsrKJn60A=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=jJlLmkbQdatN9RAA4Fz0VFbhHimG+zobtaOdemQwO/Du87gCWMdEThW/p2gHiFMqND/BUnQP/3v3YtWqljEI9h5+NcWgBwxYs+t8hWWg2+GkrdwDqbxAlW28MvHJK/QTrw++UT9UPGRJd5n/vUPnd393yEugXVbBGWNAI7ZrbOA= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from pps.filterd (m0247470.ppops.net [127.0.0.1]) by mx0a-00641c01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 41FFDcBo025439; Thu, 15 Feb 2024 15:21:08 GMT Received: from mxout23.cac.washington.edu (mxout23.cac.washington.edu [140.142.32.140]) by mx0a-00641c01.pphosted.com (PPS) with ESMTPS id 3w97csc6f7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 15 Feb 2024 15:21:08 +0000 Received: from smtp.washington.edu (smtp.washington.edu [140.142.234.157]) by mxout23.cac.washington.edu (8.14.4+UW20.07/8.14.4+UW24.02) with ESMTP id 41FFKk5u025820 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 15 Feb 2024 07:20:47 -0800 X-Auth-Received: from kmatsui-ThinkPad-X1-Carbon-Gen-9.dhcp4.washington.edu ([10.154.74.143]) (authenticated authid=kmatsui) by smtp.washington.edu (8.16.1+UW21.10/8.14.4+UW24.02) with ESMTPSA id 41FFKkgm029956 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 15 Feb 2024 07:20:46 -0800 X-UW-Orig-Sender: kmatsui@smtp.washington.edu From: Ken Matsui To: gcc-patches@gcc.gnu.org Cc: libstdc++@gcc.gnu.org, Ken Matsui Subject: [PATCH v5 02/14] libstdc++: Optimize std::add_pointer compilation performance Date: Thu, 15 Feb 2024 07:20:25 -0800 Message-ID: <20240215152037.720162-2-kmatsui@gcc.gnu.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240215152037.720162-1-kmatsui@gcc.gnu.org> References: <20240215045258.3025806-1-kmatsui@gcc.gnu.org> <20240215152037.720162-1-kmatsui@gcc.gnu.org> MIME-Version: 1.0 X-Proofpoint-GUID: ZJ9TnbQ4ShoLWOmuQjtzp7Mr4kPwbeUW X-Proofpoint-ORIG-GUID: ZJ9TnbQ4ShoLWOmuQjtzp7Mr4kPwbeUW X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-02-15_14,2024-02-14_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 adultscore=0 mlxlogscore=502 clxscore=1034 priorityscore=1501 mlxscore=0 phishscore=0 suspectscore=0 lowpriorityscore=0 bulkscore=0 spamscore=0 impostorscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2311290000 definitions=main-2402150123 X-Spam-Status: No, score=-12.9 required=5.0 tests=BAYES_00, GIT_PATCH_0, JMQ_SPF_NEUTRAL, KAM_DMARC_STATUS, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_NEUTRAL, 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 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1790979027175991111 X-GMAIL-MSGID: 1790979027175991111 This patch optimizes the compilation performance of std::add_pointer by dispatching to the new __add_pointer built-in trait. libstdc++-v3/ChangeLog: * include/std/type_traits (add_pointer): Use __add_pointer built-in trait. Signed-off-by: Ken Matsui --- libstdc++-v3/include/std/type_traits | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/libstdc++-v3/include/std/type_traits b/libstdc++-v3/include/std/type_traits index 21402fd8c13..3bde7cb8ba3 100644 --- a/libstdc++-v3/include/std/type_traits +++ b/libstdc++-v3/include/std/type_traits @@ -2121,6 +2121,12 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { }; #endif + /// add_pointer +#if _GLIBCXX_USE_BUILTIN_TRAIT(__add_pointer) + template + struct add_pointer + { using type = __add_pointer(_Tp); }; +#else template struct __add_pointer_helper { using type = _Tp; }; @@ -2129,7 +2135,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION struct __add_pointer_helper<_Tp, __void_t<_Tp*>> { using type = _Tp*; }; - /// add_pointer template struct add_pointer : public __add_pointer_helper<_Tp> @@ -2142,6 +2147,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION template struct add_pointer<_Tp&&> { using type = _Tp*; }; +#endif #if __cplusplus > 201103L /// Alias template for remove_pointer From patchwork Thu Feb 15 15:20:26 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ken Matsui X-Patchwork-Id: 201540 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:b825:b0:106:860b:bbdd with SMTP id da37csp473036dyb; Thu, 15 Feb 2024 07:23:10 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCVWYbt7AFxy9hudwUa7nVz75YfyGThQDpect3SH/SHOqc4z1KlvAUL7T3oNSrgTfdLJoCJhby53FYdFvB6JjloIEsj7ug== X-Google-Smtp-Source: AGHT+IHWiTKn9usipUH/i4DPkc9BJZrAkOAtEW1eTHUy/ckUv/VRN5SJ59C/Ne4SdtrH40q6fuFA X-Received: by 2002:a05:620a:3956:b0:787:2201:547e with SMTP id qs22-20020a05620a395600b007872201547emr2410449qkn.33.1708010590720; Thu, 15 Feb 2024 07:23:10 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1708010590; cv=pass; d=google.com; s=arc-20160816; b=aGvlgsRxPp27JDDeIO5RuLz8FM6CV9EtFXzdl/FYzh3xfX7GLLBSorOryPbTzNRa6I o2N2r7ljRkjhz29PP2Ghco2iL+UVYAM2hUCt53LbIDbEROheH+7FdCErenSsuqkfo+xo NUyMVmwfkKU8E05gBHIWxHoz+3bu3E1F8/VxlKYzZ1ohWS3N7d8OrV41D6G+mDrEnNGk +MN0odPxoSUmbZnQLuqY46BS5S+Bhs1uqf69vd0/gh3owy2/pItWGn4+lhpeEgZsM2J8 6RLg9tWBxS3DOMjJadPNCNbyLL9MFHWrQVOq+9CEKjfLiU6NLYRnrvZpWn0bwGldd4jZ jJNQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:arc-filter:dmarc-filter:delivered-to:dkim-signature :dkim-filter; bh=tj2rKYE9UzdK+64LglCUW3DGuYonjTQTzQtiiIXKs0Y=; fh=kSSy/oyUXqQD15FLeKdymIgDBFPFITPA1Gj52CNOxRQ=; b=maLh1WQamYP9gevIODK+VLqOH1iXdJpJb41PBLLa0LBJMrDhMItA5xKNlsr0nGGUbF 8dXPLSrkqTgj28Tk9/8h89zxPaEPdWcMU3d4hnFOGsgzElqZoPYWUokCgHiZGegHNdm0 NVE869a2xOVs1I/XFNHt0hcGL8dJgamk9wIV4aPJz+/cswTPydNqz3A2mkReYW9KOuoW QNPMbCANrzjtkk7JF86Xfy5ivZJNCKEIHWdiiozPshjNO/E9WBzn0ho/QLK5jbIUFYXv yzBlCM2H9TILMbd0wg7gxVymsztqJ2lVc6QkNBrlpreUxrs8Mk42UJdjXaC9nKFVXvvt kLhA==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b="kIHBHx/C"; arc=pass (i=1); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from server2.sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id z20-20020a05620a101400b00785be029f54si1675091qkj.326.2024.02.15.07.23.10 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Feb 2024 07:23:10 -0800 (PST) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b="kIHBHx/C"; arc=pass (i=1); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 5FA14384CB97 for ; Thu, 15 Feb 2024 15:23:10 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 5FA14384CB97 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1708010590; bh=tj2rKYE9UzdK+64LglCUW3DGuYonjTQTzQtiiIXKs0Y=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From; b=kIHBHx/CCuqK534oC4B772Zxk7d9MN+Eo6Uq3yxn/6JM4zwrzQEHL8Fhxd28eEM/H 7vL8dHq0gNN4crhoYjiaKw+gZCy289JzprUBAnG3ySUYWQgCvv2nsxfTs5ak1DWHyr ybK7FPlZnA2FDhuN+8T5d72GdYyX+AbW+b55I6CM= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mx0a-00641c01.pphosted.com (mx0a-00641c01.pphosted.com [205.220.165.146]) by sourceware.org (Postfix) with ESMTPS id CDAD83865C36; Thu, 15 Feb 2024 15:21:01 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org CDAD83865C36 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=gcc.gnu.org Authentication-Results: sourceware.org; spf=fail smtp.mailfrom=gcc.gnu.org ARC-Filter: OpenARC Filter v1.0.0 sourceware.org CDAD83865C36 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=205.220.165.146 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1708010469; cv=none; b=EhP1pqc8ykPgGTWn6aXIXB0e3OC8CpvuMehAs00Royaj1+6Hpx524etjVXq0tC84qMfhIeouS3YNtAfYrQiKJJ2uVP7QfmP15dW6UFaeO37kz4nlmlrJaAVeX/lQbmwVhFhiqUnl9KPTN1pFwigeBoPYEqR1L981Ypn6RnQ4CIY= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1708010469; c=relaxed/simple; bh=Tur/wSh7aOg2ht3cQZi0Ui58OA2Bp2aaNfEvLoG8zs4=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=g/RVRLra/wKO7jcVruE9488ukW43cdFjse3Sd+2W57LS36b3/6drD4vbsPi05w0HeNmeS4CButWXOMEhb3vGX1Iz5vr+0RGSkv89v67K1ko/voL+xa5JKWZa4i9LWZTBNuX2GRhpsNhmAz3irpYxtY2eNKrhOJRzkLPfbchxZVk= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from pps.filterd (m0247472.ppops.net [127.0.0.1]) by mx0a-00641c01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 41FFKhYu012664; Thu, 15 Feb 2024 15:21:00 GMT Received: from mxout22.s.uw.edu (mxout22.s.uw.edu [128.95.242.222]) by mx0a-00641c01.pphosted.com (PPS) with ESMTPS id 3w98pqbbdm-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 15 Feb 2024 15:21:00 +0000 Received: from smtp.washington.edu (smtp.washington.edu [140.142.234.157]) by mxout22.s.uw.edu (8.14.4+UW20.07/8.14.4+UW24.02) with ESMTP id 41FFKlXV031785 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 15 Feb 2024 07:20:47 -0800 X-Auth-Received: from kmatsui-ThinkPad-X1-Carbon-Gen-9.dhcp4.washington.edu ([10.154.74.143]) (authenticated authid=kmatsui) by smtp.washington.edu (8.16.1+UW21.10/8.14.4+UW24.02) with ESMTPSA id 41FFKkgn029956 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 15 Feb 2024 07:20:46 -0800 X-UW-Orig-Sender: kmatsui@smtp.washington.edu From: Ken Matsui To: gcc-patches@gcc.gnu.org Cc: libstdc++@gcc.gnu.org, Ken Matsui Subject: [PATCH v5 03/14] c++: Implement __remove_extent built-in trait Date: Thu, 15 Feb 2024 07:20:26 -0800 Message-ID: <20240215152037.720162-3-kmatsui@gcc.gnu.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240215152037.720162-1-kmatsui@gcc.gnu.org> References: <20240215045258.3025806-1-kmatsui@gcc.gnu.org> <20240215152037.720162-1-kmatsui@gcc.gnu.org> MIME-Version: 1.0 X-Proofpoint-ORIG-GUID: jTFEaL3obB5Sr8yTPGC9tckI-VxHWryR X-Proofpoint-GUID: jTFEaL3obB5Sr8yTPGC9tckI-VxHWryR X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-02-15_14,2024-02-14_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 spamscore=0 priorityscore=1501 phishscore=0 mlxlogscore=464 malwarescore=0 clxscore=1034 suspectscore=0 adultscore=0 lowpriorityscore=0 mlxscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2311290000 definitions=main-2402150123 X-Spam-Status: No, score=-12.9 required=5.0 tests=BAYES_00, GIT_PATCH_0, JMQ_SPF_NEUTRAL, KAM_DMARC_STATUS, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_NEUTRAL, 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 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1790978912895798117 X-GMAIL-MSGID: 1790978912895798117 This patch implements built-in trait for std::remove_extent. gcc/cp/ChangeLog: * cp-trait.def: Define __remove_extent. * semantics.cc (finish_trait_type): Handle CPTK_REMOVE_EXTENT. gcc/testsuite/ChangeLog: * g++.dg/ext/has-builtin-1.C: Test existence of __remove_extent. * g++.dg/ext/remove_extent.C: New test. Signed-off-by: Ken Matsui --- gcc/cp/cp-trait.def | 1 + gcc/cp/semantics.cc | 5 +++++ gcc/testsuite/g++.dg/ext/has-builtin-1.C | 3 +++ gcc/testsuite/g++.dg/ext/remove_extent.C | 16 ++++++++++++++++ 4 files changed, 25 insertions(+) create mode 100644 gcc/testsuite/g++.dg/ext/remove_extent.C diff --git a/gcc/cp/cp-trait.def b/gcc/cp/cp-trait.def index cec385ee501..3ff5611b60e 100644 --- a/gcc/cp/cp-trait.def +++ b/gcc/cp/cp-trait.def @@ -96,6 +96,7 @@ DEFTRAIT_EXPR (REF_CONSTRUCTS_FROM_TEMPORARY, "__reference_constructs_from_tempo DEFTRAIT_EXPR (REF_CONVERTS_FROM_TEMPORARY, "__reference_converts_from_temporary", 2) DEFTRAIT_TYPE (REMOVE_CV, "__remove_cv", 1) DEFTRAIT_TYPE (REMOVE_CVREF, "__remove_cvref", 1) +DEFTRAIT_TYPE (REMOVE_EXTENT, "__remove_extent", 1) DEFTRAIT_TYPE (REMOVE_POINTER, "__remove_pointer", 1) DEFTRAIT_TYPE (REMOVE_REFERENCE, "__remove_reference", 1) DEFTRAIT_TYPE (TYPE_PACK_ELEMENT, "__type_pack_element", -1) diff --git a/gcc/cp/semantics.cc b/gcc/cp/semantics.cc index 8dc975495a8..6ab054b106a 100644 --- a/gcc/cp/semantics.cc +++ b/gcc/cp/semantics.cc @@ -12777,6 +12777,11 @@ finish_trait_type (cp_trait_kind kind, tree type1, tree type2, type1 = TREE_TYPE (type1); return cv_unqualified (type1); + case CPTK_REMOVE_EXTENT: + if (TREE_CODE (type1) == ARRAY_TYPE) + type1 = TREE_TYPE (type1); + return type1; + case CPTK_REMOVE_POINTER: if (TYPE_PTR_P (type1)) type1 = TREE_TYPE (type1); diff --git a/gcc/testsuite/g++.dg/ext/has-builtin-1.C b/gcc/testsuite/g++.dg/ext/has-builtin-1.C index 56e8db7ac32..4f1094befb9 100644 --- a/gcc/testsuite/g++.dg/ext/has-builtin-1.C +++ b/gcc/testsuite/g++.dg/ext/has-builtin-1.C @@ -170,6 +170,9 @@ #if !__has_builtin (__remove_cvref) # error "__has_builtin (__remove_cvref) failed" #endif +#if !__has_builtin (__remove_extent) +# error "__has_builtin (__remove_extent) failed" +#endif #if !__has_builtin (__remove_pointer) # error "__has_builtin (__remove_pointer) failed" #endif diff --git a/gcc/testsuite/g++.dg/ext/remove_extent.C b/gcc/testsuite/g++.dg/ext/remove_extent.C new file mode 100644 index 00000000000..6183aca5a48 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/remove_extent.C @@ -0,0 +1,16 @@ +// { dg-do compile { target c++11 } } + +#define SA(X) static_assert((X),#X) + +class ClassType { }; + +SA(__is_same(__remove_extent(int), int)); +SA(__is_same(__remove_extent(int[2]), int)); +SA(__is_same(__remove_extent(int[2][3]), int[3])); +SA(__is_same(__remove_extent(int[][3]), int[3])); +SA(__is_same(__remove_extent(const int[2]), const int)); +SA(__is_same(__remove_extent(ClassType), ClassType)); +SA(__is_same(__remove_extent(ClassType[2]), ClassType)); +SA(__is_same(__remove_extent(ClassType[2][3]), ClassType[3])); +SA(__is_same(__remove_extent(ClassType[][3]), ClassType[3])); +SA(__is_same(__remove_extent(const ClassType[2]), const ClassType)); From patchwork Thu Feb 15 15:20:27 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ken Matsui X-Patchwork-Id: 201557 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:b825:b0:106:860b:bbdd with SMTP id da37csp476739dyb; Thu, 15 Feb 2024 07:29:11 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCW8msuX21eYkq5aILtndFskW3n7Vt/PzZAy0t57XsnSx2DL7iBOAUtIp5r7bYq8XJM0enq/QESXoomRykM1WB8w40h3KQ== X-Google-Smtp-Source: AGHT+IEnTsml8onmCLlv7RsrJUbp6XDvGI3qs0GXjIRnz6nZdojBvpM3jzmPgc96DPCCoCku/4gJ X-Received: by 2002:a05:622a:1108:b0:42c:26b1:6af3 with SMTP id e8-20020a05622a110800b0042c26b16af3mr1898476qty.42.1708010951122; Thu, 15 Feb 2024 07:29:11 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1708010951; cv=pass; d=google.com; s=arc-20160816; b=ajqogxdubeDWJ4viRZrZoEKW0LBT3TgsU3WhX9F3xLPQD49OtAGp+HuMHMj3FR1fpL COajRKedz033aCmVtEHIo1tkYd1F50AgQ0w2/IPvvd74y/LMgwiJui9zEbOexkU4Fh6T WbPbgeriWNLM7T8WlDMoQurL4NkWExErr9QY6pqAgOnjrMjfxWkqoWJLrhnXs/EGQXTj hv3DeFYLV56rELQn0JHAV4wwi6EaU4jTC5I7DfxdgMcYr0zJSrtcxLCROCUy3lmQN0i0 i1IKyZp2OAZTLY0gV7z/EnFBSVq1kYqTdEN2Hw3FvyuIMHEwDUvpT8Xljkl66pjSz5uC Bq9w== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:arc-filter:dmarc-filter:delivered-to:dkim-signature :dkim-filter; bh=bhLIroQpfQRMMmEh8w1SQkSn8meTZCDKfX7V6LeIOQk=; fh=kSSy/oyUXqQD15FLeKdymIgDBFPFITPA1Gj52CNOxRQ=; b=bpifM3Yd5xtACNccGrjeIDKuYrUnFl5R+C9xD1gAZY/jWLN57Yv9Du5jGqQheVwbwk DUcU1Op2f5VQnQ6XsugVl8B4qv04Sj60FDQxo9MohD9NibNZZyfa33pZ5JKKn5m4Y/Nz KxTupuDnTGcqsrNToRoxrfI3nfgzPwBXSc5DwOiTd6RMehDDdYAmwh1lA67LztSiSTzX y06G6OTndHQn6QjB+7wsxwyS06PvPQWLSOZjY6SUX7ZYMOraxK9517v2PxIdAiV8bOVU ++5R7wJ/QMOHJ9pNQIxscNhcpmrX5iuIJQ0P7m2vhXGLB78Ud2fhrfU6EuMSVTb7Yj+4 /KCg==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=ZHJiZcRw; arc=pass (i=1); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from server2.sourceware.org (server2.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id i19-20020ac84893000000b0042dac195b9csi1507196qtq.61.2024.02.15.07.29.11 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Feb 2024 07:29:11 -0800 (PST) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) client-ip=8.43.85.97; Authentication-Results: mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=ZHJiZcRw; arc=pass (i=1); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id C457038650D1 for ; Thu, 15 Feb 2024 15:29:10 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org C457038650D1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1708010950; bh=bhLIroQpfQRMMmEh8w1SQkSn8meTZCDKfX7V6LeIOQk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From; b=ZHJiZcRwVsBAUNQUu3LruvkbvHAVZmFHO/1oGYBFHjfT6tuYi2y44SvO0xrkb++Dn VHpwQkZlxsm4SeruTSgJN/Pcte3UCKJVKMuE6GdVChtiAgj/BWud9NT4Imc62P3eFg IwURkjMRv3/eLVEgVJr2z3HTB+gZuufWSz9i3q2U= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mx0a-00641c01.pphosted.com (mx0a-00641c01.pphosted.com [205.220.165.146]) by sourceware.org (Postfix) with ESMTPS id AE36E3865C28; Thu, 15 Feb 2024 15:21:10 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org AE36E3865C28 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=gcc.gnu.org Authentication-Results: sourceware.org; spf=fail smtp.mailfrom=gcc.gnu.org ARC-Filter: OpenARC Filter v1.0.0 sourceware.org AE36E3865C28 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=205.220.165.146 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1708010483; cv=none; b=Nhk/CHR4qS5BvTFWORqyFNoQu3g4IyxSXIUoPkNXtp/x3XguSArdPGD+Kpbu5kD32MAoIZvYyBT8ERScUaxhKg0w3F9JnaoUL31rKjfi2NY7CNzJY7F8GwbQIAlfA2psjiKoCP5SdCPTr8vkX7VuvPVEtkCn8F6Rn2VharOld44= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1708010483; c=relaxed/simple; bh=YsIlhNgET1sj/t8gOptVc4RjRONQSkiZ59dCfMwaZeo=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=LUUBzVGKzYj3LIC1j36hT4iuiqHj9kdF2IXVDGwFc5ez1D8SXHn64WG2HC9IWjc1NeWhVZpo3dwBwMy3z5XA3E8WyFfOlSW4B/BuiiqDer8udxqql8xP9fMLr795Uxdt9QwKgkQqELx3Vh7lIT/CbOXFKoXOCC7+MzeQquiLczQ= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from pps.filterd (m0247472.ppops.net [127.0.0.1]) by mx0a-00641c01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 41FFEx5K002315; Thu, 15 Feb 2024 15:21:09 GMT Received: from mxout25.s.uw.edu (mxout25.s.uw.edu [140.142.234.175]) by mx0a-00641c01.pphosted.com (PPS) with ESMTPS id 3w98pqbbey-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 15 Feb 2024 15:21:09 +0000 Received: from smtp.washington.edu (smtp.washington.edu [140.142.234.157]) by mxout25.s.uw.edu (8.14.4+UW20.07/8.14.4+UW24.02) with ESMTP id 41FFKlkL030364 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 15 Feb 2024 07:20:47 -0800 X-Auth-Received: from kmatsui-ThinkPad-X1-Carbon-Gen-9.dhcp4.washington.edu ([10.154.74.143]) (authenticated authid=kmatsui) by smtp.washington.edu (8.16.1+UW21.10/8.14.4+UW24.02) with ESMTPSA id 41FFKkgo029956 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 15 Feb 2024 07:20:47 -0800 X-UW-Orig-Sender: kmatsui@smtp.washington.edu From: Ken Matsui To: gcc-patches@gcc.gnu.org Cc: libstdc++@gcc.gnu.org, Ken Matsui Subject: [PATCH v5 04/14] libstdc++: Optimize std::remove_extent compilation performance Date: Thu, 15 Feb 2024 07:20:27 -0800 Message-ID: <20240215152037.720162-4-kmatsui@gcc.gnu.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240215152037.720162-1-kmatsui@gcc.gnu.org> References: <20240215045258.3025806-1-kmatsui@gcc.gnu.org> <20240215152037.720162-1-kmatsui@gcc.gnu.org> MIME-Version: 1.0 X-Proofpoint-ORIG-GUID: kv54N8qXCacyOvd0MUWq7psluIDffZkS X-Proofpoint-GUID: kv54N8qXCacyOvd0MUWq7psluIDffZkS X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-02-15_14,2024-02-14_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 spamscore=0 priorityscore=1501 phishscore=0 mlxlogscore=606 malwarescore=0 clxscore=1034 suspectscore=0 adultscore=0 lowpriorityscore=0 mlxscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2311290000 definitions=main-2402150123 X-Spam-Status: No, score=-12.9 required=5.0 tests=BAYES_00, GIT_PATCH_0, JMQ_SPF_NEUTRAL, KAM_DMARC_STATUS, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_NEUTRAL, 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 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1790979290690565934 X-GMAIL-MSGID: 1790979290690565934 This patch optimizes the compilation performance of std::remove_extent by dispatching to the new __remove_extent built-in trait. libstdc++-v3/ChangeLog: * include/std/type_traits (remove_extent): Use __remove_extent built-in trait. Signed-off-by: Ken Matsui --- libstdc++-v3/include/std/type_traits | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/libstdc++-v3/include/std/type_traits b/libstdc++-v3/include/std/type_traits index 3bde7cb8ba3..0fb1762186c 100644 --- a/libstdc++-v3/include/std/type_traits +++ b/libstdc++-v3/include/std/type_traits @@ -2064,6 +2064,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // Array modifications. /// remove_extent +#if _GLIBCXX_USE_BUILTIN_TRAIT(__remove_extent) + template + struct remove_extent + { using type = __remove_extent(_Tp); }; +#else template struct remove_extent { using type = _Tp; }; @@ -2075,6 +2080,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION template struct remove_extent<_Tp[]> { using type = _Tp; }; +#endif /// remove_all_extents template From patchwork Thu Feb 15 15:20:28 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ken Matsui X-Patchwork-Id: 201551 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:b825:b0:106:860b:bbdd with SMTP id da37csp475298dyb; Thu, 15 Feb 2024 07:26:49 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCWPpIdq1fXYkTPXn0m/Y5vudxPXH5DT+aYrn0NhAVTqX92uPdW5+ByYYOUSkuzPAMVVaQnYyR7wDbUDEVJ8pREIAksiDA== X-Google-Smtp-Source: AGHT+IGLMyPTR9DYnyJsMhM3QjRif0CIEH0TaHpLEog1bdSpwiNrK90y0tnbA3A8nuyfY+3xQ5JW X-Received: by 2002:a05:6358:7e54:b0:17a:f876:4417 with SMTP id p20-20020a0563587e5400b0017af8764417mr2178499rwm.12.1708010808921; Thu, 15 Feb 2024 07:26:48 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1708010808; cv=pass; d=google.com; s=arc-20160816; b=RORf7N2oEoBc6SZ6t9jWSpGT6CpG51ODjfPI5As6cy+HKP9zz5UtnnQFhn/hYR6njz W+4R5mlCk9iNHWDyFHUL9AF6ML5uSxj+qXGyRqxiArTKOtI2ydxHE5zbUMXw6qOeBFNG xTjEty5bb+mUxIqy6+3TeTFaczv4v/NVWHPzmZJMAjDyl84Qo5DTfay6AGnrgvtk4T7R rHJa+uMBXFudA7sNWoNree66nueL8SAm7knPz+D5q2GCruggqJ3qNlhZtbd/1JP+F4u5 jIrxYcL5/qBfW1kV5T25COV1Jpi83rJ/koMb1nD05nMSgLsdIUZ8BXxzaRp8gTL7I1a4 j+Qw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:arc-filter:dmarc-filter:delivered-to:dkim-signature :dkim-filter; bh=HCkGcH645GYlpsk467qNsvGRbVZ+BGqmE4Ow5kk31wA=; fh=kSSy/oyUXqQD15FLeKdymIgDBFPFITPA1Gj52CNOxRQ=; b=Fimj7NNM6Szh0Tl9S5JyCVNzhjC7H8kNPLta7XC8k3VTrJ188gQD318CExlxtsXYaQ SluNi1P57nNRWxVvyU5Fiv6Ts0LlGlJSJzaoWX0Gimr4EJ2mxNDCRNYre8a5Q7H84RRV V0xtOnWPxwoGNk3AAqZm84jWdZC4zq0bFOXKewUv3UNQTAT8HKJEFscwKWot8MuqHVT6 fdfSdZfKxmRsRADzQLoLgnUy5oiJE81HWau20mEmH9kU+ZrEI5d/qDrQu7QxePQ8x9RU cmt1eMD68wI9Iyj9HKH7EVGNyr/tO+rhpTUx+Wu6bU14YIr4cGe7bDStpXYRhi5HPMDl fVLA==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=KGEtKKAT; arc=pass (i=1); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from server2.sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id f5-20020ac84985000000b0042c773a4d3csi1474814qtq.410.2024.02.15.07.26.48 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Feb 2024 07:26:48 -0800 (PST) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=KGEtKKAT; arc=pass (i=1); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 8F361384F00C for ; Thu, 15 Feb 2024 15:26:48 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 8F361384F00C DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1708010808; bh=HCkGcH645GYlpsk467qNsvGRbVZ+BGqmE4Ow5kk31wA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From; b=KGEtKKATKBMArwh9IN5nG5GOy/esNCS0zC6Bp+/ayT6X6U4aA+nrVSomC6lu+IJYx raJTPV26UKv57dZfj/udb63BDuWOUtPAJSzHV+7BEIwtgSpWLZFj3+prs3+incNVYh MdlXyVeC7toOiXSKaNFjLFUc26T9Kn9aIGROJTFg= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mx0b-00641c01.pphosted.com (mx0b-00641c01.pphosted.com [205.220.177.146]) by sourceware.org (Postfix) with ESMTPS id 92BBF384DED2; Thu, 15 Feb 2024 15:21:18 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 92BBF384DED2 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=gcc.gnu.org Authentication-Results: sourceware.org; spf=fail smtp.mailfrom=gcc.gnu.org ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 92BBF384DED2 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=205.220.177.146 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1708010489; cv=none; b=Csg9sPuzLIe9VYaCHCRvQ9iAJbXpOOmj0NWMBubonB0m3gwF88Xu5Qguuzk1BIosPWteW4L3SFNythQ4qt7wsJqZR+H/3VLW1tcoNVClABP4EKwqE2Jzw49f4iWJZML5rrVbBSyNULY6Ip2ZqIzhsiMSuNZZA39dr0kQaURrhbc= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1708010489; c=relaxed/simple; bh=NjJ+uIp1zaFFdm3eVt+eosLgH99G1zJ2njjkimdG3jU=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=ax00A83wofTgkemUFgpTe+t3mfKB5kLMElz96JPTfKc18ymRjxFH30P6cWM3nWPkiHRCc7EneF+P4BpcCtDzfudZ7GYmhKLvWBSZBv/rWCocgzrms8Bo15npDcjC/2Li0o5sDFuG8KSIr0Y0KH5S+ljvh08WsLXMDXl+0JqfbeM= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from pps.filterd (m0247479.ppops.net [127.0.0.1]) by mx0a-00641c01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 41FFKj0D029904; Thu, 15 Feb 2024 15:21:18 GMT Received: from mxout24.cac.washington.edu (mxout24.cac.washington.edu [140.142.234.158]) by mx0a-00641c01.pphosted.com (PPS) with ESMTPS id 3w939jpkjn-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 15 Feb 2024 15:21:17 +0000 Received: from smtp.washington.edu (smtp.washington.edu [140.142.234.157]) by mxout24.cac.washington.edu (8.14.4+UW20.07/8.14.4+UW24.02) with ESMTP id 41FFKllP026337 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 15 Feb 2024 07:20:47 -0800 X-Auth-Received: from kmatsui-ThinkPad-X1-Carbon-Gen-9.dhcp4.washington.edu ([10.154.74.143]) (authenticated authid=kmatsui) by smtp.washington.edu (8.16.1+UW21.10/8.14.4+UW24.02) with ESMTPSA id 41FFKkgp029956 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 15 Feb 2024 07:20:47 -0800 X-UW-Orig-Sender: kmatsui@smtp.washington.edu From: Ken Matsui To: gcc-patches@gcc.gnu.org Cc: libstdc++@gcc.gnu.org, Ken Matsui Subject: [PATCH v5 05/14] c++: Implement __remove_all_extents built-in trait Date: Thu, 15 Feb 2024 07:20:28 -0800 Message-ID: <20240215152037.720162-5-kmatsui@gcc.gnu.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240215152037.720162-1-kmatsui@gcc.gnu.org> References: <20240215045258.3025806-1-kmatsui@gcc.gnu.org> <20240215152037.720162-1-kmatsui@gcc.gnu.org> MIME-Version: 1.0 X-Proofpoint-ORIG-GUID: UZ1pd7WrMY0ZWqUj1G7eiXrAOXqfHgie X-Proofpoint-GUID: UZ1pd7WrMY0ZWqUj1G7eiXrAOXqfHgie X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-02-15_14,2024-02-14_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 lowpriorityscore=0 phishscore=0 priorityscore=1501 mlxscore=0 adultscore=0 clxscore=1034 malwarescore=0 impostorscore=0 mlxlogscore=296 bulkscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2311290000 definitions=main-2402150123 X-Spam-Status: No, score=-13.3 required=5.0 tests=BAYES_00, GIT_PATCH_0, JMQ_SPF_NEUTRAL, KAM_DMARC_STATUS, RCVD_IN_DNSWL_LOW, SPF_HELO_NONE, SPF_NEUTRAL, 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 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1790969306559142639 X-GMAIL-MSGID: 1790979141914530189 This patch implements built-in trait for std::remove_all_extents. gcc/cp/ChangeLog: * cp-trait.def: Define __remove_all_extents. * semantics.cc (finish_trait_type): Handle CPTK_REMOVE_ALL_EXTENTS. gcc/testsuite/ChangeLog: * g++.dg/ext/has-builtin-1.C: Test existence of __remove_all_extents. * g++.dg/ext/remove_all_extents.C: New test. Signed-off-by: Ken Matsui --- gcc/cp/cp-trait.def | 1 + gcc/cp/semantics.cc | 3 +++ gcc/testsuite/g++.dg/ext/has-builtin-1.C | 3 +++ gcc/testsuite/g++.dg/ext/remove_all_extents.C | 16 ++++++++++++++++ 4 files changed, 23 insertions(+) create mode 100644 gcc/testsuite/g++.dg/ext/remove_all_extents.C diff --git a/gcc/cp/cp-trait.def b/gcc/cp/cp-trait.def index 3ff5611b60e..ce29108bad6 100644 --- a/gcc/cp/cp-trait.def +++ b/gcc/cp/cp-trait.def @@ -94,6 +94,7 @@ DEFTRAIT_EXPR (IS_TRIVIALLY_COPYABLE, "__is_trivially_copyable", 1) DEFTRAIT_EXPR (IS_UNION, "__is_union", 1) DEFTRAIT_EXPR (REF_CONSTRUCTS_FROM_TEMPORARY, "__reference_constructs_from_temporary", 2) DEFTRAIT_EXPR (REF_CONVERTS_FROM_TEMPORARY, "__reference_converts_from_temporary", 2) +DEFTRAIT_TYPE (REMOVE_ALL_EXTENTS, "__remove_all_extents", 1) DEFTRAIT_TYPE (REMOVE_CV, "__remove_cv", 1) DEFTRAIT_TYPE (REMOVE_CVREF, "__remove_cvref", 1) DEFTRAIT_TYPE (REMOVE_EXTENT, "__remove_extent", 1) diff --git a/gcc/cp/semantics.cc b/gcc/cp/semantics.cc index 6ab054b106a..c8ac5167c3c 100644 --- a/gcc/cp/semantics.cc +++ b/gcc/cp/semantics.cc @@ -12769,6 +12769,9 @@ finish_trait_type (cp_trait_kind kind, tree type1, tree type2, type1 = TREE_TYPE (type1); return build_pointer_type (type1); + case CPTK_REMOVE_ALL_EXTENTS: + return strip_array_types (type1); + case CPTK_REMOVE_CV: return cv_unqualified (type1); diff --git a/gcc/testsuite/g++.dg/ext/has-builtin-1.C b/gcc/testsuite/g++.dg/ext/has-builtin-1.C index 4f1094befb9..9af64173524 100644 --- a/gcc/testsuite/g++.dg/ext/has-builtin-1.C +++ b/gcc/testsuite/g++.dg/ext/has-builtin-1.C @@ -164,6 +164,9 @@ #if !__has_builtin (__reference_converts_from_temporary) # error "__has_builtin (__reference_converts_from_temporary) failed" #endif +#if !__has_builtin (__remove_all_extents) +# error "__has_builtin (__remove_all_extents) failed" +#endif #if !__has_builtin (__remove_cv) # error "__has_builtin (__remove_cv) failed" #endif diff --git a/gcc/testsuite/g++.dg/ext/remove_all_extents.C b/gcc/testsuite/g++.dg/ext/remove_all_extents.C new file mode 100644 index 00000000000..60ade2ade7f --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/remove_all_extents.C @@ -0,0 +1,16 @@ +// { dg-do compile { target c++11 } } + +#define SA(X) static_assert((X),#X) + +class ClassType { }; + +SA(__is_same(__remove_all_extents(int), int)); +SA(__is_same(__remove_all_extents(int[2]), int)); +SA(__is_same(__remove_all_extents(int[2][3]), int)); +SA(__is_same(__remove_all_extents(int[][3]), int)); +SA(__is_same(__remove_all_extents(const int[2][3]), const int)); +SA(__is_same(__remove_all_extents(ClassType), ClassType)); +SA(__is_same(__remove_all_extents(ClassType[2]), ClassType)); +SA(__is_same(__remove_all_extents(ClassType[2][3]), ClassType)); +SA(__is_same(__remove_all_extents(ClassType[][3]), ClassType)); +SA(__is_same(__remove_all_extents(const ClassType[2][3]), const ClassType)); From patchwork Thu Feb 15 15:20:29 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ken Matsui X-Patchwork-Id: 201545 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:b825:b0:106:860b:bbdd with SMTP id da37csp473895dyb; Thu, 15 Feb 2024 07:24:29 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCWzHvR+lkxXruQepv6dHBvjPD60FJ8WotEWda6Raiz+NuJGkA2ke0YxoCgnYhx+yheORzNuhk/qrHbBgyGdQvujSYWQAQ== X-Google-Smtp-Source: AGHT+IGQg8J133V2jKE9eM2TcGKVkIEDA7BQNlk638rnRHpW9m14CDFmavCH7s9fU34bSe2puB8K X-Received: by 2002:a05:620a:956:b0:787:1c2f:b12e with SMTP id w22-20020a05620a095600b007871c2fb12emr1851623qkw.50.1708010668950; Thu, 15 Feb 2024 07:24:28 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1708010668; cv=pass; d=google.com; s=arc-20160816; b=lu3tVbpuZOxtNsnfmbUKy+Iw6/hRZ988JtGdO7ZqpGFA1rOTt37mqgt/7sDzEe/DwY zcPK5lLXCFOlNIem03btYyIeDwSop8PGgRX5YE/8xufbcUWHzWVWaA4F/epxR34Uwp3L 398aKze3EvmBGSLT8v4HDZMFjbu8ppy95l9G6RGzgpuFGoIP4/zeDhqZ927CrVDMikrA tYSerSfv/XjJXnXkjOecYQwOvHltZMJ55lGSKDdqUhNhaly5yv11/BKvUv/kEd/c3E8b xX3q2+A70RKJALTENDp0sWYHWFpCUJQ+iQu3AgY8sf+IiofEg7rb+fdAMZo6HcquV+96 HXRw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:arc-filter:dmarc-filter:delivered-to:dkim-signature :dkim-filter; bh=Qe9Ze3oNOBt0eaWkTCfF7gd1TJ/0Hyjk9ZqKNIET7iw=; fh=kSSy/oyUXqQD15FLeKdymIgDBFPFITPA1Gj52CNOxRQ=; b=Eqv2L0jPYiMzuBZJZ7rv7UAJqmgBezGGBP+/65igu67jYnqVJ9tt5/hPFNX/CLM0c6 dvMn3V2dVDJajlTUCP2h4R3XoWefdsu0ta0LtePCUdj152Qkt9TV1kjvqu/gsT94Ifx2 +Z3khIz0mnhQaGJLetQd1XqGGSve3EGH0UY2SLl7f6eqqKhZ+qep/f57G4KGPufBpY6r NOyB8md9Uk5QK9Z2zEP1SMjUyMHhKrSk2CeJu2lXbb3lgx61aqXSngabeGvpCWiG45Wd au3I68NcAC27nmziiZXsaUWsI0Bc5/tBmCYS1vmWgPIgPUHMngGpQwbAxn88CAUoCCvd 0CAA==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b="JP6J4pB/"; arc=pass (i=1); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from server2.sourceware.org (server2.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id h20-20020a05620a10b400b00785bdfe0c47si1676318qkk.258.2024.02.15.07.24.28 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Feb 2024 07:24:28 -0800 (PST) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) client-ip=8.43.85.97; Authentication-Results: mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b="JP6J4pB/"; arc=pass (i=1); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 96CE5386C588 for ; Thu, 15 Feb 2024 15:24:28 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 96CE5386C588 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1708010668; bh=Qe9Ze3oNOBt0eaWkTCfF7gd1TJ/0Hyjk9ZqKNIET7iw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From; b=JP6J4pB/qo4a7AGTmTfJ2OF9e9T6/WEWHRBwvsbtxlaYRaJKTep+al42k9yKvKOYq AFAnOdlohsij11jde8Ids4PZFeYW6l8TU+vDES7pOFmhWG7FY+AHtFlt4D2hak9dIc 0xfu537aN6GpAsvLH40rzE5lsmSyH7zgcq/bbtu4= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mx0b-00641c01.pphosted.com (mx0b-00641c01.pphosted.com [205.220.177.146]) by sourceware.org (Postfix) with ESMTPS id 28D3B3865C32; Thu, 15 Feb 2024 15:21:09 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 28D3B3865C32 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=gcc.gnu.org Authentication-Results: sourceware.org; spf=fail smtp.mailfrom=gcc.gnu.org ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 28D3B3865C32 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=205.220.177.146 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1708010476; cv=none; b=iuNTrBaYCTwWr2zdOc9D7hwI8++v92C93x6J9u2FOMn6NSGNl0I3nesLECRHSaYwcOoAF0KgRAbPWkbMS2iytB+Dp+zKZAR7W/XKGW2yqsTtAuauqE8drHUqVM628bgba3+RZwxt8u+IUUCVFKFFwPHp26U9S0FumI5wkHhyc/Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1708010476; c=relaxed/simple; bh=0mWkNCGfEpbY8ZaljnRGSqMfcKKyNvZvLFq0EQVTCPg=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=GBM2EkylTUe+UJo/LsRlseDvufpsvcLBvmqjrY6c3zFWZin13Tq+8fm0XcgMALXGyrKp+4qrSfbxSyGBQYDa4Gzhnw9bXQpmay91vimJPFzPDFAuEKp5zqAql58iX8NvYP99DvRjOVV1hV5u1QstOQ9U8tSu2y8yyFgkhBSCFF0= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from pps.filterd (m0247480.ppops.net [127.0.0.1]) by mx0a-00641c01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 41FFKALj000306; Thu, 15 Feb 2024 15:21:08 GMT Received: from mxout23.cac.washington.edu (mxout23.cac.washington.edu [140.142.32.140]) by mx0a-00641c01.pphosted.com (PPS) with ESMTPS id 3w950xwbxu-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 15 Feb 2024 15:21:08 +0000 Received: from smtp.washington.edu (smtp.washington.edu [140.142.234.157]) by mxout23.cac.washington.edu (8.14.4+UW20.07/8.14.4+UW24.02) with ESMTP id 41FFKlaq025821 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 15 Feb 2024 07:20:47 -0800 X-Auth-Received: from kmatsui-ThinkPad-X1-Carbon-Gen-9.dhcp4.washington.edu ([10.154.74.143]) (authenticated authid=kmatsui) by smtp.washington.edu (8.16.1+UW21.10/8.14.4+UW24.02) with ESMTPSA id 41FFKkgq029956 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 15 Feb 2024 07:20:47 -0800 X-UW-Orig-Sender: kmatsui@smtp.washington.edu From: Ken Matsui To: gcc-patches@gcc.gnu.org Cc: libstdc++@gcc.gnu.org, Ken Matsui Subject: [PATCH v5 06/14] libstdc++: Optimize std::remove_all_extents compilation performance Date: Thu, 15 Feb 2024 07:20:29 -0800 Message-ID: <20240215152037.720162-6-kmatsui@gcc.gnu.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240215152037.720162-1-kmatsui@gcc.gnu.org> References: <20240215045258.3025806-1-kmatsui@gcc.gnu.org> <20240215152037.720162-1-kmatsui@gcc.gnu.org> MIME-Version: 1.0 X-Proofpoint-GUID: 5eo6wQFbCA3v4a0JzrHinwd0DJsYjBxI X-Proofpoint-ORIG-GUID: 5eo6wQFbCA3v4a0JzrHinwd0DJsYjBxI X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-02-15_14,2024-02-14_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 bulkscore=0 mlxscore=0 mlxlogscore=680 impostorscore=0 clxscore=1034 priorityscore=1501 suspectscore=0 phishscore=0 lowpriorityscore=0 malwarescore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2311290000 definitions=main-2402150123 X-Spam-Status: No, score=-13.3 required=5.0 tests=BAYES_00, GIT_PATCH_0, JMQ_SPF_NEUTRAL, KAM_DMARC_STATUS, RCVD_IN_DNSWL_LOW, SPF_HELO_NONE, SPF_NEUTRAL, 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 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1790969593605097278 X-GMAIL-MSGID: 1790978995100797219 This patch optimizes the compilation performance of std::remove_all_extents by dispatching to the new __remove_all_extents built-in trait. libstdc++-v3/ChangeLog: * include/std/type_traits (remove_all_extents): Use __remove_all_extents built-in trait. Signed-off-by: Ken Matsui --- libstdc++-v3/include/std/type_traits | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/libstdc++-v3/include/std/type_traits b/libstdc++-v3/include/std/type_traits index 0fb1762186c..2e1cc1c1d5f 100644 --- a/libstdc++-v3/include/std/type_traits +++ b/libstdc++-v3/include/std/type_traits @@ -2083,6 +2083,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #endif /// remove_all_extents +#if _GLIBCXX_USE_BUILTIN_TRAIT(__remove_all_extents) + template + struct remove_all_extents + { using type = __remove_all_extents(_Tp); }; +#else template struct remove_all_extents { using type = _Tp; }; @@ -2094,6 +2099,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION template struct remove_all_extents<_Tp[]> { using type = typename remove_all_extents<_Tp>::type; }; +#endif #if __cplusplus > 201103L /// Alias template for remove_extent From patchwork Thu Feb 15 15:20:30 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ken Matsui X-Patchwork-Id: 201549 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:b825:b0:106:860b:bbdd with SMTP id da37csp474645dyb; Thu, 15 Feb 2024 07:25:44 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCXRnHYSZL4Rd3GrHQOq3y1Omw+RE1ntkwB+Kn4+4EqVTjiODycY4P5PmCrSvi9YfkUeU4e+QD1c2U7dgATW8aXmTwiG/A== X-Google-Smtp-Source: AGHT+IGLsCGtOjM5oEw3gC9fHbtbaD2/eb+kpRj/NVNvGs3CTJ202t/q1J20c08mVBTj/ovpJKjK X-Received: by 2002:a05:620a:31a5:b0:787:2219:3886 with SMTP id bi37-20020a05620a31a500b0078722193886mr2756078qkb.3.1708010743994; Thu, 15 Feb 2024 07:25:43 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1708010743; cv=pass; d=google.com; s=arc-20160816; b=CVPUYO4ZuYEEhaNY9OgdDaAanN5YdSYZBSGvv42uFYLUap7x/ExvHUx0858Y2ZfwXk GEZISPh1aVuf+dxMlG7QR5A0VttOLxf/9YdPdg/N7X2uvklTgsq7UrkQa1n64eOoRkPy bI4vk9tlT7a6kb6UuQIQPEtZQCyX6GaoqThXiDHtILEla2a+raqJnRbtseMZBKtzt8AK UbOP3+xhyfct7iB8l7W9oYqPVWBpNmCJUkc2dzKPGJoLYiHhSWBLFWerZaEW7MXCyyLV wknHGnv8rE+SCFCk95vaViPRdZufw5WJ73W0aljKW/y7XOsSNMvwJ1eC/jsLiGaGAsw1 NJ2w== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:arc-filter:dmarc-filter:delivered-to:dkim-signature :dkim-filter; bh=CQn/RaNZK1Npnku0QOkPqekp03YW8Z4Djjcb5psxz7s=; fh=kSSy/oyUXqQD15FLeKdymIgDBFPFITPA1Gj52CNOxRQ=; b=wv7cYL9VKB7p0PoxkbrT5zcAeWr/cXBxzXk9pFCPamti5mnk5Ktc+cshLFzFkLwNVr HbT15h1h6477WLYyCPflxa7nrdThZweREVBh+JXq3KSKkLpN2XdwQr601Mi8d5ToYQGG SVKd1IpRKPqXw8zdQ08HBXKecuP9sc7EI5TISgVdG6zETxhQ5XBtqBvPAD+m6oD4p1bP laUNvsh4qb0tDIkL5dVPUpwnZEZW5WhoXgEAWU1dkHWaCcPTVMfPqvmBwlPTSaOp3cGX aB216UKEgHEOyenFBTEg5zjMsA4hex+7nBWoymflsL2GwUJv1GXXGkZzENoMGwIi2xWt ++1A==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=Vs7OaOZS; arc=pass (i=1); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from server2.sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id u1-20020a05620a084100b00785d76fbcbesi1668976qku.141.2024.02.15.07.25.43 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Feb 2024 07:25:43 -0800 (PST) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=Vs7OaOZS; arc=pass (i=1); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 54061386C58B for ; Thu, 15 Feb 2024 15:25:43 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 54061386C58B DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1708010743; bh=CQn/RaNZK1Npnku0QOkPqekp03YW8Z4Djjcb5psxz7s=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From; b=Vs7OaOZSKpf9s7imaVid9xW+2c4xrhqKu/f2epANcQYKlP6rGCyJcbT/Vw5bAO7dt e+wADxQDoxtsNatkS2hsz6trVZV94W6UJWIXLIIiFBMYqrN4GzhIBx9n+7G8hqTo/O 6C4j0cYdID6jIPVdjfoLTa2Yj+q+S+N0d6DP7EnM= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mx0b-00641c01.pphosted.com (mx0b-00641c01.pphosted.com [205.220.177.146]) by sourceware.org (Postfix) with ESMTPS id 07722384CBB9; Thu, 15 Feb 2024 15:20:57 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 07722384CBB9 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=gcc.gnu.org Authentication-Results: sourceware.org; spf=fail smtp.mailfrom=gcc.gnu.org ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 07722384CBB9 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=205.220.177.146 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1708010460; cv=none; b=eCK8yrFBeSqXNvSwDwKizs+1jcjHEmUxXo5vD11FhQV1eloY1akzr+oXzxnAkeoVpEX7mHiwuviv8xGkNBqS+F9nCMWBqJ/UOHNBXQVkrqNCCPa1tl2bYapVdF9sYdqwjf2cwC+uOnAwo1izwn8cBa6ezH6zwKrua+x5ZHr3P0U= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1708010460; c=relaxed/simple; bh=/vOyzEjhUKqKYVTHlozJ5tjfs5N2lDpixB5PcU/fr28=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=u2np/nSQ4jJtKPye0EtXf4FU1pUmegRfz//I5W8W1VV+sDhAKZLDVKGXXZ5/IgMF09xhYb6IRpGDmo1lqT/fSSLddUzBzS0Mmqtsx39JrLemHxWrndhxQ05fZJN0YaNdBGB89nWlragkC0nBokhky9ZwNr4ZEbmDTpMNSimKN58= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from pps.filterd (m0247479.ppops.net [127.0.0.1]) by mx0a-00641c01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 41FFJHVJ027196; Thu, 15 Feb 2024 15:20:56 GMT Received: from mxout26.s.uw.edu (mxout26.s.uw.edu [140.142.234.176]) by mx0a-00641c01.pphosted.com (PPS) with ESMTPS id 3w939jpkg6-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 15 Feb 2024 15:20:56 +0000 Received: from smtp.washington.edu (smtp.washington.edu [140.142.234.157]) by mxout26.s.uw.edu (8.14.4+UW20.07/8.14.4+UW24.02) with ESMTP id 41FFKlD8010513 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 15 Feb 2024 07:20:47 -0800 X-Auth-Received: from kmatsui-ThinkPad-X1-Carbon-Gen-9.dhcp4.washington.edu ([10.154.74.143]) (authenticated authid=kmatsui) by smtp.washington.edu (8.16.1+UW21.10/8.14.4+UW24.02) with ESMTPSA id 41FFKkgr029956 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 15 Feb 2024 07:20:47 -0800 X-UW-Orig-Sender: kmatsui@smtp.washington.edu From: Ken Matsui To: gcc-patches@gcc.gnu.org Cc: libstdc++@gcc.gnu.org, Ken Matsui Subject: [PATCH v5 07/14] c++: Implement __add_lvalue_reference built-in trait Date: Thu, 15 Feb 2024 07:20:30 -0800 Message-ID: <20240215152037.720162-7-kmatsui@gcc.gnu.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240215152037.720162-1-kmatsui@gcc.gnu.org> References: <20240215045258.3025806-1-kmatsui@gcc.gnu.org> <20240215152037.720162-1-kmatsui@gcc.gnu.org> MIME-Version: 1.0 X-Proofpoint-ORIG-GUID: 1SVKld72CCs-wsCOKktTzBsGrqlA6J2D X-Proofpoint-GUID: 1SVKld72CCs-wsCOKktTzBsGrqlA6J2D X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-02-15_14,2024-02-14_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 lowpriorityscore=0 phishscore=0 priorityscore=1501 mlxscore=0 adultscore=0 clxscore=1034 malwarescore=0 impostorscore=0 mlxlogscore=767 bulkscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2311290000 definitions=main-2402150123 X-Spam-Status: No, score=-13.3 required=5.0 tests=BAYES_00, GIT_PATCH_0, JMQ_SPF_NEUTRAL, KAM_DMARC_STATUS, RCVD_IN_DNSWL_LOW, SPF_HELO_NONE, SPF_NEUTRAL, 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 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1790969475577799651 X-GMAIL-MSGID: 1790979073772034606 This patch implements built-in trait for std::add_lvalue_reference. gcc/cp/ChangeLog: * cp-trait.def: Define __add_lvalue_reference. * semantics.cc (finish_trait_type): Handle CPTK_ADD_LVALUE_REFERENCE. gcc/testsuite/ChangeLog: * g++.dg/ext/has-builtin-1.C: Test existence of __add_lvalue_reference. * g++.dg/ext/add_lvalue_reference.C: New test. Signed-off-by: Ken Matsui --- gcc/cp/cp-trait.def | 1 + gcc/cp/semantics.cc | 8 +++++++ .../g++.dg/ext/add_lvalue_reference.C | 21 +++++++++++++++++++ gcc/testsuite/g++.dg/ext/has-builtin-1.C | 3 +++ 4 files changed, 33 insertions(+) create mode 100644 gcc/testsuite/g++.dg/ext/add_lvalue_reference.C diff --git a/gcc/cp/cp-trait.def b/gcc/cp/cp-trait.def index ce29108bad6..7dcc6bbad76 100644 --- a/gcc/cp/cp-trait.def +++ b/gcc/cp/cp-trait.def @@ -48,6 +48,7 @@ #define DEFTRAIT_TYPE_DEFAULTED #endif +DEFTRAIT_TYPE (ADD_LVALUE_REFERENCE, "__add_lvalue_reference", 1) DEFTRAIT_TYPE (ADD_POINTER, "__add_pointer", 1) DEFTRAIT_EXPR (HAS_NOTHROW_ASSIGN, "__has_nothrow_assign", 1) DEFTRAIT_EXPR (HAS_NOTHROW_CONSTRUCTOR, "__has_nothrow_constructor", 1) diff --git a/gcc/cp/semantics.cc b/gcc/cp/semantics.cc index c8ac5167c3c..82fc31d9f9b 100644 --- a/gcc/cp/semantics.cc +++ b/gcc/cp/semantics.cc @@ -12760,6 +12760,14 @@ finish_trait_type (cp_trait_kind kind, tree type1, tree type2, switch (kind) { + case CPTK_ADD_LVALUE_REFERENCE: + if (VOID_TYPE_P (type1) + || (FUNC_OR_METHOD_TYPE_P (type1) + && (type_memfn_quals (type1) != TYPE_UNQUALIFIED + || type_memfn_rqual (type1) != REF_QUAL_NONE))) + return type1; + return cp_build_reference_type (type1, /*rval=*/false); + case CPTK_ADD_POINTER: if (FUNC_OR_METHOD_TYPE_P (type1) && (type_memfn_quals (type1) != TYPE_UNQUALIFIED diff --git a/gcc/testsuite/g++.dg/ext/add_lvalue_reference.C b/gcc/testsuite/g++.dg/ext/add_lvalue_reference.C new file mode 100644 index 00000000000..8fe1e0300e5 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/add_lvalue_reference.C @@ -0,0 +1,21 @@ +// { dg-do compile { target c++11 } } + +#define SA(X) static_assert((X),#X) + +class ClassType { }; + +SA(__is_same(__add_lvalue_reference(int), int&)); +SA(__is_same(__add_lvalue_reference(int&), int&)); +SA(__is_same(__add_lvalue_reference(const int), const int&)); +SA(__is_same(__add_lvalue_reference(int*), int*&)); +SA(__is_same(__add_lvalue_reference(ClassType&), ClassType&)); +SA(__is_same(__add_lvalue_reference(ClassType), ClassType&)); +SA(__is_same(__add_lvalue_reference(int(int)), int(&)(int))); +SA(__is_same(__add_lvalue_reference(int&&), int&)); +SA(__is_same(__add_lvalue_reference(ClassType&&), ClassType&)); +SA(__is_same(__add_lvalue_reference(void), void)); +SA(__is_same(__add_lvalue_reference(const void), const void)); +SA(__is_same(__add_lvalue_reference(bool(int) const), bool(int) const)); +SA(__is_same(__add_lvalue_reference(bool(int) &), bool(int) &)); +SA(__is_same(__add_lvalue_reference(bool(int) const &&), bool(int) const &&)); +SA(__is_same(__add_lvalue_reference(bool(int)), bool(&)(int))); diff --git a/gcc/testsuite/g++.dg/ext/has-builtin-1.C b/gcc/testsuite/g++.dg/ext/has-builtin-1.C index 9af64173524..1046ffe7d01 100644 --- a/gcc/testsuite/g++.dg/ext/has-builtin-1.C +++ b/gcc/testsuite/g++.dg/ext/has-builtin-1.C @@ -2,6 +2,9 @@ // { dg-do compile } // Verify that __has_builtin gives the correct answer for C++ built-ins. +#if !__has_builtin (__add_lvalue_reference) +# error "__has_builtin (__add_lvalue_reference) failed" +#endif #if !__has_builtin (__add_pointer) # error "__has_builtin (__add_pointer) failed" #endif From patchwork Thu Feb 15 15:20:31 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ken Matsui X-Patchwork-Id: 201541 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:b825:b0:106:860b:bbdd with SMTP id da37csp473086dyb; Thu, 15 Feb 2024 07:23:15 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCWhKB13sAXPTN41JrdjYgD6+/StjZpK2o7+gCuiOp82u/pxOY/m/RUaXDc7PR4W3FHbRXsaXLe2zk99xsX5eAE7+V33Bg== X-Google-Smtp-Source: AGHT+IHz4A6FFp5wg8TaTW3TpOnN4v8zWMeZ4p3PwFX9tLjYiKg2XsvQA+p9CCvvpFVAFG6wpB/T X-Received: by 2002:a5b:60c:0:b0:dc6:9399:849e with SMTP id d12-20020a5b060c000000b00dc69399849emr1940001ybq.11.1708010594919; Thu, 15 Feb 2024 07:23:14 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1708010594; cv=pass; d=google.com; s=arc-20160816; b=wSJQB5emhZAFi/ggXTQPqNwvI4TQYRFjl1jq4SJzsEzu1NHm6SufEQyGOnQDDVcae4 ZTKKExjWXRM0meltIpMfVV7ILbj45zy734mQROucCkJoKFvocmyJSZ1sgZRcQ3buGejJ 5MNZJbqDI4n0AXR3/fJGarcLTXGaowOamhDhifRGoQw+bpvSTZsvuJ2EnhFvQtASrJKE kk78BENHfBUusN4CJDjivD8uqKzyFmC9uJNdBt6nNH1G7q9ZDJLtoC5cN/P9z1tjkMLp 1zaxEq2dDGTW4FBL1merNl1AQNM9EUSQd3imdtxVh66efMLsqp9sTeRx6TjL3ITVSbVv ZuTQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:arc-filter:dmarc-filter:delivered-to:dkim-signature :dkim-filter; bh=dkEAshbr4K+pXGJo/ZDuCKfVD6NXufREzwHlrx1rfhw=; fh=kSSy/oyUXqQD15FLeKdymIgDBFPFITPA1Gj52CNOxRQ=; b=dQr8QrwcfaXuVB9x/qXdKCq6B873NQqCxAxGNGxVi7L9DC3+U6MYKiDBNlmvlHOiP/ pK1rMKdVChtf2McjT4UrG8h5YXt80pQfNbhbCC1oBTzToKgS9JxGWDyMCTEHbksbNvkS fIWU/AVYltyslvfz0N2RFsnm8lQqn7VRxrAxh+Dm4lcchLj+1FO+dim32JR3fnQns5Kh cCgTlGLkzyPMEisT9MWm/KFr5wa3nMsL8m7sy0THVViudvqNl1rWbCBVu66QxI28rmIp ikV1avXR12S1vvPdMRrQG0ITZNJZOWwqTa/slk6Pwfc1Ii4fMO8mjoQ6Li6HhF5ovbhG q9Bw==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=H65ZGruE; arc=pass (i=1); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from server2.sourceware.org (server2.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id c9-20020a05620a200900b007834b7bf527si1731732qka.351.2024.02.15.07.23.14 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Feb 2024 07:23:14 -0800 (PST) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) client-ip=8.43.85.97; Authentication-Results: mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=H65ZGruE; arc=pass (i=1); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 0CEBC386C5A1 for ; Thu, 15 Feb 2024 15:23:14 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 0CEBC386C5A1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1708010594; bh=dkEAshbr4K+pXGJo/ZDuCKfVD6NXufREzwHlrx1rfhw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From; b=H65ZGruEy5KcLUInf4DrbdS9Ix3ri5LEqg4DNAaaYCZfPP34cGKpvuZYn5/U3DtKh Ih8Cgm58/hN7zfLvuTKFb9kF3aZOQTxUqsGyu8LEO9T76X574PBVk03ShkxK1Th7We bOOcl7vAPjEerhEvdA0cWodbFTndfgyw1lO5yHag= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mx0b-00641c01.pphosted.com (mx0b-00641c01.pphosted.com [205.220.177.146]) by sourceware.org (Postfix) with ESMTPS id 5F017384CBBA; Thu, 15 Feb 2024 15:20:57 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 5F017384CBBA Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=gcc.gnu.org Authentication-Results: sourceware.org; spf=fail smtp.mailfrom=gcc.gnu.org ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 5F017384CBBA Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=205.220.177.146 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1708010460; cv=none; b=aIRhtd/cbp1ThvlzW3O6ptjpOtCa2qGlaMa5o1eyDph1TAnKdsONSVurutSZAhUbsB/c2xWNx4P/8S9a7DiBu1Uc7teZNLdRgr+xouygsKJ8jmEuuxGA7fl88Nh+rDv4o/0GrmYD6ASEX5g50+7N/HJLGhryz43PUxmns7MsTuQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1708010460; c=relaxed/simple; bh=t2jAdqwW6QGJBGEY9KIWY7by0tGyR+EA5NyovQUG/HQ=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=gvqRuUZdr40yeKu85DvmSR8qUnOQM25Gx2Jm2LvQDI5RHO+Ul26v5unP2amInYIX9FB5JTjNoae2PDFKisjXi17K7NlUryLregydRtDjy1WNh+3Nq5jL/hW8tn/k1cBO05xoQ3X3NGTVye7VYPDLI3fCx1a5JK+QArI0r2Y5vzo= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from pps.filterd (m0247478.ppops.net [127.0.0.1]) by mx0a-00641c01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 41FFJlk7022836; Thu, 15 Feb 2024 15:20:57 GMT Received: from mxout26.s.uw.edu (mxout26.s.uw.edu [140.142.234.176]) by mx0a-00641c01.pphosted.com (PPS) with ESMTPS id 3w94rewhhp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 15 Feb 2024 15:20:56 +0000 Received: from smtp.washington.edu (smtp.washington.edu [140.142.234.157]) by mxout26.s.uw.edu (8.14.4+UW20.07/8.14.4+UW24.02) with ESMTP id 41FFKl7V010514 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 15 Feb 2024 07:20:47 -0800 X-Auth-Received: from kmatsui-ThinkPad-X1-Carbon-Gen-9.dhcp4.washington.edu ([10.154.74.143]) (authenticated authid=kmatsui) by smtp.washington.edu (8.16.1+UW21.10/8.14.4+UW24.02) with ESMTPSA id 41FFKkgs029956 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 15 Feb 2024 07:20:47 -0800 X-UW-Orig-Sender: kmatsui@smtp.washington.edu From: Ken Matsui To: gcc-patches@gcc.gnu.org Cc: libstdc++@gcc.gnu.org, Ken Matsui Subject: [PATCH v5 08/14] libstdc++: Optimize std::add_lvalue_reference compilation performance Date: Thu, 15 Feb 2024 07:20:31 -0800 Message-ID: <20240215152037.720162-8-kmatsui@gcc.gnu.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240215152037.720162-1-kmatsui@gcc.gnu.org> References: <20240215045258.3025806-1-kmatsui@gcc.gnu.org> <20240215152037.720162-1-kmatsui@gcc.gnu.org> MIME-Version: 1.0 X-Proofpoint-ORIG-GUID: qu4gG4nk91X7QzC-jiFA6O3wivGYaogT X-Proofpoint-GUID: qu4gG4nk91X7QzC-jiFA6O3wivGYaogT X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-02-15_14,2024-02-14_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 priorityscore=1501 mlxscore=0 malwarescore=0 bulkscore=0 spamscore=0 mlxlogscore=695 lowpriorityscore=0 adultscore=0 suspectscore=0 clxscore=1034 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2311290000 definitions=main-2402150123 X-Spam-Status: No, score=-13.2 required=5.0 tests=BAYES_00, GIT_PATCH_0, JMQ_SPF_NEUTRAL, KAM_DMARC_STATUS, RCVD_IN_DNSWL_LOW, SPF_HELO_NONE, SPF_NEUTRAL, 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 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1790969326088288499 X-GMAIL-MSGID: 1790978917802816614 This patch optimizes the compilation performance of std::add_lvalue_reference by dispatching to the new __add_lvalue_reference built-in trait. libstdc++-v3/ChangeLog: * include/std/type_traits (add_lvalue_reference): Use __add_lvalue_reference built-in trait. (__add_lvalue_reference_helper): Likewise. Signed-off-by: Ken Matsui --- libstdc++-v3/include/std/type_traits | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/libstdc++-v3/include/std/type_traits b/libstdc++-v3/include/std/type_traits index 2e1cc1c1d5f..1f4e6db72f4 100644 --- a/libstdc++-v3/include/std/type_traits +++ b/libstdc++-v3/include/std/type_traits @@ -1129,6 +1129,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION }; /// @cond undocumented +#if _GLIBCXX_USE_BUILTIN_TRAIT(__add_lvalue_reference) + template + struct __add_lvalue_reference_helper + { using type = __add_lvalue_reference(_Tp); }; +#else template struct __add_lvalue_reference_helper { using type = _Tp; }; @@ -1136,6 +1141,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION template struct __add_lvalue_reference_helper<_Tp, __void_t<_Tp&>> { using type = _Tp&; }; +#endif template using __add_lval_ref_t = typename __add_lvalue_reference_helper<_Tp>::type; @@ -1703,9 +1709,15 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #endif /// add_lvalue_reference +#if _GLIBCXX_USE_BUILTIN_TRAIT(__add_lvalue_reference) + template + struct add_lvalue_reference + { using type = __add_lvalue_reference(_Tp); }; +#else template struct add_lvalue_reference { using type = __add_lval_ref_t<_Tp>; }; +#endif /// add_rvalue_reference template From patchwork Thu Feb 15 15:20:32 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ken Matsui X-Patchwork-Id: 201555 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:b825:b0:106:860b:bbdd with SMTP id da37csp476404dyb; Thu, 15 Feb 2024 07:28:38 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCX9jZ1OCNfu4SVEy+uhoYzFgkpwC5i8SLuuCbnsbki8XodfcRUIc9BYCyMAHr6HNgQP0fSRHFkNHsclkJsBgl3m03Uoww== X-Google-Smtp-Source: AGHT+IFfo6jSBX483wdx/47hb3/OgjWDmdIvFavw6U3ZUQjOyRQMz8ekYPXx62cGgPLGVtoAVMtt X-Received: by 2002:a05:620a:3956:b0:787:2201:547e with SMTP id qs22-20020a05620a395600b007872201547emr2427012qkn.33.1708010918591; Thu, 15 Feb 2024 07:28:38 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1708010918; cv=pass; d=google.com; s=arc-20160816; b=yUKGsH00o6s5JhaJAvs9PIVFcRdCtBm2PeuvhoCtE9w/wQHFeJ4j/Ku1vbPueIvT3/ 78F3sWzItG6YfuFzpCQ56sQeDtbwKDjPt33Km9uN0mwOo0xHbJXNeaRCyBefXasnISLR nMP7zyiCFPtGB8rdn6+FQ+mN+YFxYUKAtbmEEf1v+7udyYfuyWNjJpi4aHvVUGWpJqlh FKOdvAwnz3XI7ZteQ4HFRtWvqmY8pN6qoaJmDsq6xoZn72ROR6xzbizgL6FwVSSN0cJM wVB4oYMKlInSXEwzGT/ICgZqNqwZwE8P/boo7k9/qjKh1yKLu6xaSRmjWd/MBLVG+Zz1 n6kA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:arc-filter:dmarc-filter:delivered-to:dkim-signature :dkim-filter; bh=7G/45lkASX7fDIkC8yZP2gaeI4h7qKKCR9ZMRVncri4=; fh=kSSy/oyUXqQD15FLeKdymIgDBFPFITPA1Gj52CNOxRQ=; b=FFty38imeqjgaixTRrBK5iXLblm2sFOkGJbjLjR2VFd25g6RxDCN7uQ5DsQN6KUTmH Hpf+LvjGi5UgMzEfDlk8kmEO34gF0RwG5YZmNnFUJKOaIjDFqXTJWyFdZZmOALzyZoDV w2069SUADsgbNVQzkoou2htTaXQek2jaq7+RgRjrn/XNUWoHRG8htVmrCP6lfqnJ4Vzb ZdZ/CWqypOsATOB8FrSOe0I5lPEuJO8cfBs3BfLkPDqTITbcBV8nNhAvBrBALQrmjzRU Kby5HOXRVNPXyN6FrgCYs7HrYw1INYvmHSY6kB4i+V9pO9qrszSKnUEasyRSuW++LZEc FKEA==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=XtoTnjX1; arc=pass (i=1); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from server2.sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id z20-20020a05620a101400b00785be029f54si1684265qkj.326.2024.02.15.07.28.38 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Feb 2024 07:28:38 -0800 (PST) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=XtoTnjX1; arc=pass (i=1); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 4080138618BE for ; Thu, 15 Feb 2024 15:28:38 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 4080138618BE DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1708010918; bh=7G/45lkASX7fDIkC8yZP2gaeI4h7qKKCR9ZMRVncri4=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From; b=XtoTnjX1CCt72olSRy/flxtC7FwAfGJkTeYxsMCRqMs5w3b9InKRxsROhFmbPt6cH UVrW6QF17E1RnErOV/qD1oOae3lk3kPHWXzTvHqATMtDG5tgz/lCJXg/+oIJ3dvsrT y+Fz8qcecksAar57An7HdwTelXj8yqIp7aW6GVAI= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mx0a-00641c01.pphosted.com (mx0a-00641c01.pphosted.com [205.220.165.146]) by sourceware.org (Postfix) with ESMTPS id 39D42386483B; Thu, 15 Feb 2024 15:21:18 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 39D42386483B Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=gcc.gnu.org Authentication-Results: sourceware.org; spf=fail smtp.mailfrom=gcc.gnu.org ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 39D42386483B Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=205.220.165.146 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1708010489; cv=none; b=Lm7Z6edDlbcfpgoIDzuST0ykl+NebffN65EEG8uXjq30UNeifHssr+yBqCfz6P4Wb9TSt5rmTg24V1ABA88FiUNgsfa2RsVo1krAbhHQqV/ZO8A2MPF9Nlssr0i3hJNLgPkgGDCzPmPO8un/Bk0JRBe2+8/yCkTK6z0ti/3H90Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1708010489; c=relaxed/simple; bh=7RTw5K8XXgqhwPoYZ05ppT4ygGXq+fII6yvB1jfUYwY=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=CXntczNcbp2L8/JuKzugNRh6+ICfu7u65Ef4DOGcuN5wN+J8p6FQ/aDadqQmyW2bsoWx/VWmwEQdszFLKj19RiS3y5+JTP22NTCQHgH5anImlBVP3xsOK0SmF4ItP68O03Owh1VWLHL9rIhcj1/xHDBj9X9nIWw41wboDvxK3qs= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from pps.filterd (m0247473.ppops.net [127.0.0.1]) by mx0a-00641c01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 41FFFN9D012423; Thu, 15 Feb 2024 15:21:17 GMT Received: from mxout24.cac.washington.edu (mxout24.cac.washington.edu [140.142.234.158]) by mx0a-00641c01.pphosted.com (PPS) with ESMTPS id 3w98q3bbcv-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 15 Feb 2024 15:21:17 +0000 Received: from smtp.washington.edu (smtp.washington.edu [140.142.234.157]) by mxout24.cac.washington.edu (8.14.4+UW20.07/8.14.4+UW24.02) with ESMTP id 41FFKl54026338 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 15 Feb 2024 07:20:47 -0800 X-Auth-Received: from kmatsui-ThinkPad-X1-Carbon-Gen-9.dhcp4.washington.edu ([10.154.74.143]) (authenticated authid=kmatsui) by smtp.washington.edu (8.16.1+UW21.10/8.14.4+UW24.02) with ESMTPSA id 41FFKkgt029956 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 15 Feb 2024 07:20:47 -0800 X-UW-Orig-Sender: kmatsui@smtp.washington.edu From: Ken Matsui To: gcc-patches@gcc.gnu.org Cc: libstdc++@gcc.gnu.org, Ken Matsui Subject: [PATCH v5 09/14] c++: Implement __add_rvalue_reference built-in trait Date: Thu, 15 Feb 2024 07:20:32 -0800 Message-ID: <20240215152037.720162-9-kmatsui@gcc.gnu.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240215152037.720162-1-kmatsui@gcc.gnu.org> References: <20240215045258.3025806-1-kmatsui@gcc.gnu.org> <20240215152037.720162-1-kmatsui@gcc.gnu.org> MIME-Version: 1.0 X-Proofpoint-GUID: mtbiHE053aTzO1VTFi9QXuY3e3DVIu43 X-Proofpoint-ORIG-GUID: mtbiHE053aTzO1VTFi9QXuY3e3DVIu43 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-02-15_14,2024-02-14_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 malwarescore=0 impostorscore=0 suspectscore=0 mlxscore=0 phishscore=0 spamscore=0 bulkscore=0 adultscore=0 clxscore=1034 mlxlogscore=322 lowpriorityscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2311290000 definitions=main-2402150123 X-Spam-Status: No, score=-13.0 required=5.0 tests=BAYES_00, GIT_PATCH_0, JMQ_SPF_NEUTRAL, KAM_DMARC_STATUS, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_NEUTRAL, 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 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1790969449983521457 X-GMAIL-MSGID: 1790979257130085955 This patch implements built-in trait for std::add_rvalue_reference. gcc/cp/ChangeLog: * cp-trait.def: Define __add_rvalue_reference. * semantics.cc (finish_trait_type): Handle CPTK_ADD_RVALUE_REFERENCE. gcc/testsuite/ChangeLog: * g++.dg/ext/has-builtin-1.C: Test existence of __add_rvalue_reference. * g++.dg/ext/add_rvalue_reference.C: New test. Signed-off-by: Ken Matsui --- gcc/cp/cp-trait.def | 1 + gcc/cp/semantics.cc | 8 ++++++++ .../g++.dg/ext/add_rvalue_reference.C | 20 +++++++++++++++++++ gcc/testsuite/g++.dg/ext/has-builtin-1.C | 3 +++ 4 files changed, 32 insertions(+) create mode 100644 gcc/testsuite/g++.dg/ext/add_rvalue_reference.C diff --git a/gcc/cp/cp-trait.def b/gcc/cp/cp-trait.def index 7dcc6bbad76..9e8f9eb38b8 100644 --- a/gcc/cp/cp-trait.def +++ b/gcc/cp/cp-trait.def @@ -50,6 +50,7 @@ DEFTRAIT_TYPE (ADD_LVALUE_REFERENCE, "__add_lvalue_reference", 1) DEFTRAIT_TYPE (ADD_POINTER, "__add_pointer", 1) +DEFTRAIT_TYPE (ADD_RVALUE_REFERENCE, "__add_rvalue_reference", 1) DEFTRAIT_EXPR (HAS_NOTHROW_ASSIGN, "__has_nothrow_assign", 1) DEFTRAIT_EXPR (HAS_NOTHROW_CONSTRUCTOR, "__has_nothrow_constructor", 1) DEFTRAIT_EXPR (HAS_NOTHROW_COPY, "__has_nothrow_copy", 1) diff --git a/gcc/cp/semantics.cc b/gcc/cp/semantics.cc index 82fc31d9f9b..f437e272ea6 100644 --- a/gcc/cp/semantics.cc +++ b/gcc/cp/semantics.cc @@ -12777,6 +12777,14 @@ finish_trait_type (cp_trait_kind kind, tree type1, tree type2, type1 = TREE_TYPE (type1); return build_pointer_type (type1); + case CPTK_ADD_RVALUE_REFERENCE: + if (VOID_TYPE_P (type1) + || (FUNC_OR_METHOD_TYPE_P (type1) + && (type_memfn_quals (type1) != TYPE_UNQUALIFIED + || type_memfn_rqual (type1) != REF_QUAL_NONE))) + return type1; + return cp_build_reference_type (type1, /*rval=*/true); + case CPTK_REMOVE_ALL_EXTENTS: return strip_array_types (type1); diff --git a/gcc/testsuite/g++.dg/ext/add_rvalue_reference.C b/gcc/testsuite/g++.dg/ext/add_rvalue_reference.C new file mode 100644 index 00000000000..c92fe6bfa17 --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/add_rvalue_reference.C @@ -0,0 +1,20 @@ +// { dg-do compile { target c++11 } } + +#define SA(X) static_assert((X),#X) + +class ClassType { }; + +SA(__is_same(__add_rvalue_reference(int), int&&)); +SA(__is_same(__add_rvalue_reference(int&&), int&&)); +SA(__is_same(__add_rvalue_reference(int&), int&)); +SA(__is_same(__add_rvalue_reference(const int), const int&&)); +SA(__is_same(__add_rvalue_reference(int*), int*&&)); +SA(__is_same(__add_rvalue_reference(ClassType&&), ClassType&&)); +SA(__is_same(__add_rvalue_reference(ClassType), ClassType&&)); +SA(__is_same(__add_rvalue_reference(int(int)), int(&&)(int))); +SA(__is_same(__add_rvalue_reference(void), void)); +SA(__is_same(__add_rvalue_reference(const void), const void)); +SA(__is_same(__add_rvalue_reference(bool(int) const), bool(int) const)); +SA(__is_same(__add_rvalue_reference(bool(int) &), bool(int) &)); +SA(__is_same(__add_rvalue_reference(bool(int) const &&), bool(int) const &&)); +SA(__is_same(__add_rvalue_reference(bool(int)), bool(&&)(int))); diff --git a/gcc/testsuite/g++.dg/ext/has-builtin-1.C b/gcc/testsuite/g++.dg/ext/has-builtin-1.C index 1046ffe7d01..9d7e59b47fb 100644 --- a/gcc/testsuite/g++.dg/ext/has-builtin-1.C +++ b/gcc/testsuite/g++.dg/ext/has-builtin-1.C @@ -8,6 +8,9 @@ #if !__has_builtin (__add_pointer) # error "__has_builtin (__add_pointer) failed" #endif +#if !__has_builtin (__add_rvalue_reference) +# error "__has_builtin (__add_rvalue_reference) failed" +#endif #if !__has_builtin (__builtin_addressof) # error "__has_builtin (__builtin_addressof) failed" #endif From patchwork Thu Feb 15 15:20:33 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ken Matsui X-Patchwork-Id: 201552 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:b825:b0:106:860b:bbdd with SMTP id da37csp475551dyb; Thu, 15 Feb 2024 07:27:15 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCU7BZ/Xg9UNAFbEAuGLEKJK59fgbWbF+8fcfXaFQCRxFdRPJRckSZGM9dJVycqodIiCsCDaH9Ba9uxSClvFen37dYQzrQ== X-Google-Smtp-Source: AGHT+IHjNCMMYxJZ1ftEBDIBbjP5JUmR+wU+vamecvJBtazqxfdQ+bIqoqaaV+GQy5rW/mq9Iy0C X-Received: by 2002:a05:622a:3cb:b0:42d:bf4f:8453 with SMTP id k11-20020a05622a03cb00b0042dbf4f8453mr2563065qtx.58.1708010835342; Thu, 15 Feb 2024 07:27:15 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1708010835; cv=pass; d=google.com; s=arc-20160816; b=OnaNbtLdVGjYAEDhqUHgeUOcX5AUsMhkfjWVre2AM8uv0hQNElf4N9xC2X7TyyI6DD Frkx+9fzqoEF4WuQOEHyY6+8KvOrQ4e/2dwoMhxB4YH2VkAo4RwDplDDQQfURiYcS8k3 bgpTaQnL5AbeDdtO+uFAuacvlm8RFpeTDOXvK71KEWDeOP4vYhwjZniHYARE5OKqWzkw zOaV6vsvroBufozK0qkpeS5d6ZyWVzr+RLrKwNI712mgyS5kpnGE3RxCX6SITjanwHHu yb9l4qePBRusI+NcaKHtjVdYft46phRnrqYDisCRlo3E2m9z4b64sVsGvKoxrqDOOP2J Cm7w== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:arc-filter:dmarc-filter:delivered-to:dkim-signature :dkim-filter; bh=6yjO2rxQpBvyYdXJQcSBJjI76ovn/UO6OSWCf7wn8nc=; fh=kSSy/oyUXqQD15FLeKdymIgDBFPFITPA1Gj52CNOxRQ=; b=MFn/gAshKEu91zcpF6pEOum4GX6gT53X09pUvJZqRDexUogrXvXCyk0OdxbyPLf82x x85e3rX4R5SJ9DeMle//9QiCGwdqVYNEgm9g6bRAcpnDG2+XtfCe9IyVi2lMNH1MSCYP pheaGk7wuZD++yfjGcy1PLe078pRGCh3E5fhET8yUkRAFdE5NiGPsV7BuuK6i7u/7NJ7 eXMlq8MdXsrOMe4LcoQhF9zGA7qtIhsYth2EArJI4dk895u9vQf/cgvbHaqAlE+Aw1u6 A01+Ll4MBQr6MhozEVoMxEFhtAAHVYDwkMwdaMyzbIuMFr5gVVm0erS9Neiuu4IDDEny uBDg==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=kgxhXmV1; arc=pass (i=1); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from server2.sourceware.org (server2.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id a4-20020a05620a102400b0078732d2a79fsi1680588qkk.280.2024.02.15.07.27.15 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Feb 2024 07:27:15 -0800 (PST) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) client-ip=8.43.85.97; Authentication-Results: mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=kgxhXmV1; arc=pass (i=1); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id F2296386C582 for ; Thu, 15 Feb 2024 15:27:14 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org F2296386C582 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1708010835; bh=6yjO2rxQpBvyYdXJQcSBJjI76ovn/UO6OSWCf7wn8nc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From; b=kgxhXmV10KlkLl6MZdHcRQRmrZl0/b2TrvFfuZPgAzjbblB3pSn9SFNCkcG33GIjP v3g6kablSQ2QFiu4ndaXfTbiYMyiERcJLD98VCskCrBXh0pXoSd6lT7Xw0uZtBj7uJ 8GDnOhFfU4shiCf4RxMcO3cioz4bU0EAiNWfIk5U= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mx0b-00641c01.pphosted.com (mx0b-00641c01.pphosted.com [205.220.177.146]) by sourceware.org (Postfix) with ESMTPS id 01B4B38618BE; Thu, 15 Feb 2024 15:21:08 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 01B4B38618BE Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=gcc.gnu.org Authentication-Results: sourceware.org; spf=fail smtp.mailfrom=gcc.gnu.org ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 01B4B38618BE Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=205.220.177.146 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1708010476; cv=none; b=txChqg3jt+WsExPA/co9irlC0UMpbOuVtZo0zC2hg2xfmRwQTbKJ8/wJcn4b5DV735UGDCqlPu+1aAHO4MtDVbb6ed3hDERglKbK0HHT2xCCBu+MQHqrQidDSbAMd8cyUfRrkRiBCI65Ez6JSSbFh/p9iQO7ZvUDVeZRoVzcaXI= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1708010476; c=relaxed/simple; bh=Lvl+FT8IvryzLxkGcHzhKpdBdzMobGciTXizVO8O2UQ=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=kNXMedOIlmZpouuG+l4j6d3t1Qbn+uEwNrFRIZu6VbheuodXfkveZyIJBpq+xk14AUIlbI+MIoIql1+Ex3rueEdZDG+ONKDbeEF3c7Zb1S5XBELPt22tBGZGkeuDqqfulc+6zd9Bhfu5r6FioXELRxNrgWTwYC0yPzKzUJFdudw= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from pps.filterd (m0247477.ppops.net [127.0.0.1]) by mx0a-00641c01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 41FFL5e0008929; Thu, 15 Feb 2024 15:21:08 GMT Received: from mxout23.cac.washington.edu (mxout23.cac.washington.edu [140.142.32.140]) by mx0a-00641c01.pphosted.com (PPS) with ESMTPS id 3w97y0uq7n-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 15 Feb 2024 15:21:08 +0000 Received: from smtp.washington.edu (smtp.washington.edu [140.142.234.157]) by mxout23.cac.washington.edu (8.14.4+UW20.07/8.14.4+UW24.02) with ESMTP id 41FFKlqP025822 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 15 Feb 2024 07:20:47 -0800 X-Auth-Received: from kmatsui-ThinkPad-X1-Carbon-Gen-9.dhcp4.washington.edu ([10.154.74.143]) (authenticated authid=kmatsui) by smtp.washington.edu (8.16.1+UW21.10/8.14.4+UW24.02) with ESMTPSA id 41FFKkgu029956 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 15 Feb 2024 07:20:47 -0800 X-UW-Orig-Sender: kmatsui@smtp.washington.edu From: Ken Matsui To: gcc-patches@gcc.gnu.org Cc: libstdc++@gcc.gnu.org, Ken Matsui Subject: [PATCH v5 10/14] libstdc++: Optimize std::add_rvalue_reference compilation performance Date: Thu, 15 Feb 2024 07:20:33 -0800 Message-ID: <20240215152037.720162-10-kmatsui@gcc.gnu.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240215152037.720162-1-kmatsui@gcc.gnu.org> References: <20240215045258.3025806-1-kmatsui@gcc.gnu.org> <20240215152037.720162-1-kmatsui@gcc.gnu.org> MIME-Version: 1.0 X-Proofpoint-ORIG-GUID: 3Czf2xgH_6DtH0ak5vh6HfHWRQfL79_D X-Proofpoint-GUID: 3Czf2xgH_6DtH0ak5vh6HfHWRQfL79_D X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-02-15_14,2024-02-14_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 impostorscore=0 adultscore=0 mlxlogscore=598 malwarescore=0 bulkscore=0 priorityscore=1501 suspectscore=0 spamscore=0 mlxscore=0 clxscore=1034 lowpriorityscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2311290000 definitions=main-2402150123 X-Spam-Status: No, score=-13.3 required=5.0 tests=BAYES_00, GIT_PATCH_0, JMQ_SPF_NEUTRAL, KAM_DMARC_STATUS, RCVD_IN_DNSWL_LOW, SPF_HELO_NONE, SPF_NEUTRAL, 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 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1790969304001046850 X-GMAIL-MSGID: 1790979169510150067 This patch optimizes the compilation performance of std::add_rvalue_reference by dispatching to the new __add_rvalue_reference built-in trait. libstdc++-v3/ChangeLog: * include/std/type_traits (add_rvalue_reference): Use __add_rvalue_reference built-in trait. (__add_rvalue_reference_helper): Likewise. Signed-off-by: Ken Matsui --- libstdc++-v3/include/std/type_traits | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/libstdc++-v3/include/std/type_traits b/libstdc++-v3/include/std/type_traits index 1f4e6db72f4..219d36fabba 100644 --- a/libstdc++-v3/include/std/type_traits +++ b/libstdc++-v3/include/std/type_traits @@ -1157,6 +1157,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION }; /// @cond undocumented +#if _GLIBCXX_USE_BUILTIN_TRAIT(__add_rvalue_reference) + template + struct __add_rvalue_reference_helper + { using type = __add_rvalue_reference(_Tp); }; +#else template struct __add_rvalue_reference_helper { using type = _Tp; }; @@ -1164,6 +1169,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION template struct __add_rvalue_reference_helper<_Tp, __void_t<_Tp&&>> { using type = _Tp&&; }; +#endif template using __add_rval_ref_t = typename __add_rvalue_reference_helper<_Tp>::type; @@ -1720,9 +1726,15 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #endif /// add_rvalue_reference +#if _GLIBCXX_USE_BUILTIN_TRAIT(__add_rvalue_reference) + template + struct add_rvalue_reference + { using type = __add_rvalue_reference(_Tp); }; +#else template struct add_rvalue_reference { using type = __add_rval_ref_t<_Tp>; }; +#endif #if __cplusplus > 201103L /// Alias template for remove_reference From patchwork Thu Feb 15 15:20:34 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ken Matsui X-Patchwork-Id: 201538 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:b825:b0:106:860b:bbdd with SMTP id da37csp472814dyb; Thu, 15 Feb 2024 07:22:51 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCVDaxKSvBE0PyL8s+c6jYx58mr/vgVQkUpezs8M3GxR/w0ZAQUy1ytrNAfDZtYHey9o41XKTftuNkvPz6OfDhhfQQErvw== X-Google-Smtp-Source: AGHT+IGLr6H8J7dNhEU58qFOszsnvdyJejYzKLvpVtlrPQ/3guasuAelhNZGk8+K2mRF4YB6vez4 X-Received: by 2002:a25:6086:0:b0:dc6:ff6b:71b2 with SMTP id u128-20020a256086000000b00dc6ff6b71b2mr1975473ybb.4.1708010571173; Thu, 15 Feb 2024 07:22:51 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1708010571; cv=pass; d=google.com; s=arc-20160816; b=B5dO4T1zzigmDJwTlaLwOBzBkVTeL4/9vFhb84/xiVQcVRU+ZloElHy8dpsdTS7io/ 5gxzhlClXQxB+h/jDT9m1x5SSuvmp9rViMNgYtAnj4ytIT0k/nMDHVsxnUOHHJmMvcWG pmQmlWEXBl3RphM7UJXvteYYlSmw12R+fl5OfGgu68oVvWX6oSeWod7pg5u2MqKi6dUq WgL+eiETfA36q5sUffwbZmYDzrEuqJ+uWF5vnmiYX8NHjj3UgU703YUVB6AmU4JPfdzE oY3sPbaZ5YjndFYY62Ak7TX4u3NPUCpE4UO7/mukLtZilLkJ8vcWkPNP+ajRiiL6X6jb vn+A== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:arc-filter:dmarc-filter:delivered-to:dkim-signature :dkim-filter; bh=GvMC4/YLQrafKNqSneEUIG9+CoQOTwZJqDrfxAsgm5s=; fh=kSSy/oyUXqQD15FLeKdymIgDBFPFITPA1Gj52CNOxRQ=; b=BnGNsgCJM8Wa1okkPyw50Y4x4YDp95+KXrO5NgoQpL1qHDjrRIRWx452Kjvh2LhFab q3P9BELOdnmXc0jABcxoelaP1rZ3UutQgDIoYwjSZZtMZOu7573m8zwvFLFJB0jnm8Vx 6I2PFJFe/F820/YABjKOaOFWHfrQJEyK8ynaAnBcgNX0x8GwpvvddjBkEF5IpGaDWWTM PPczxmg+c42mERM8ACnocHW4GKS4XAlwKr8GufVWKV9OvipT04VEg/cvbUCk9a6wh82M /hUfnMLy7t5j/u0NHN++2ZXJv3dVeEpE+18n1q/rqYuSgXwHmWaxru5NlW4WCyFQiCXM SN7A==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b="ZS/otGPI"; arc=pass (i=1); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from server2.sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id b26-20020ac844da000000b0042c7297f3d4si1499048qto.650.2024.02.15.07.22.51 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Feb 2024 07:22:51 -0800 (PST) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b="ZS/otGPI"; arc=pass (i=1); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id D0CD5386C5B5 for ; Thu, 15 Feb 2024 15:22:50 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org D0CD5386C5B5 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1708010570; bh=GvMC4/YLQrafKNqSneEUIG9+CoQOTwZJqDrfxAsgm5s=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From; b=ZS/otGPIT6moDCiHRSvfBEFhMXAX6mW5AVNvP0ytjk7lbEGnYfpHl/j5lz7Mn0jYY 0jn0jfG0copR4K7ISDzM6345h/q/ldrSB/eHcsJ15tjAPshe8Rrctj5o/oYY44e2aE QNgA0qJNFa7BS3kqsfieAtlWgCP3j7PoBti2FVk0= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mx0b-00641c01.pphosted.com (mx0b-00641c01.pphosted.com [205.220.177.146]) by sourceware.org (Postfix) with ESMTPS id 067AB384CBB0; Thu, 15 Feb 2024 15:20:57 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 067AB384CBB0 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=gcc.gnu.org Authentication-Results: sourceware.org; spf=fail smtp.mailfrom=gcc.gnu.org ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 067AB384CBB0 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=205.220.177.146 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1708010460; cv=none; b=R4UqASYhvWDPoqLQC6nitPEYOL5rX9PaYKyjbP+rYlUcIyp2wImINnyhwxTxIe4ic6Z011PEcVl+eXddzu9xJAHwFoMhvmPTWw+wTJtsDwf7nllXruQkPrR61KETScpQL3Ii5tVoHsgJ/gvz/j0PIwWcTpiBRagIcPVGMP6m0Pw= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1708010460; c=relaxed/simple; bh=TLnI1o+oUc/RNVc6OG+kyAtLW5xg09gJVK2bsii7p30=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=jz3LPxodevj8g7JW85kA7vQxfmt6kxbBoJVP9hwqViD29vAj6u/bS1lIN7EyLgmzQjUEIpNYKDKomCphj79eBNzRYDV+R4tTscrqZ7111ddXOLk1H/kBp+BMB36HuqryTHSXQbsJ98//nHOq3KQcPR5t+LcZT3veJ9sAMoJMfAA= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from pps.filterd (m0247479.ppops.net [127.0.0.1]) by mx0a-00641c01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 41FFKj07029904; Thu, 15 Feb 2024 15:20:56 GMT Received: from mxout26.s.uw.edu (mxout26.s.uw.edu [140.142.234.176]) by mx0a-00641c01.pphosted.com (PPS) with ESMTPS id 3w939jpkg8-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 15 Feb 2024 15:20:56 +0000 Received: from smtp.washington.edu (smtp.washington.edu [140.142.234.157]) by mxout26.s.uw.edu (8.14.4+UW20.07/8.14.4+UW24.02) with ESMTP id 41FFKl9f010516 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 15 Feb 2024 07:20:47 -0800 X-Auth-Received: from kmatsui-ThinkPad-X1-Carbon-Gen-9.dhcp4.washington.edu ([10.154.74.143]) (authenticated authid=kmatsui) by smtp.washington.edu (8.16.1+UW21.10/8.14.4+UW24.02) with ESMTPSA id 41FFKkgv029956 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 15 Feb 2024 07:20:47 -0800 X-UW-Orig-Sender: kmatsui@smtp.washington.edu From: Ken Matsui To: gcc-patches@gcc.gnu.org Cc: libstdc++@gcc.gnu.org, Ken Matsui Subject: [PATCH v5 11/14] c++: Implement __decay built-in trait Date: Thu, 15 Feb 2024 07:20:34 -0800 Message-ID: <20240215152037.720162-11-kmatsui@gcc.gnu.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240215152037.720162-1-kmatsui@gcc.gnu.org> References: <20240215045258.3025806-1-kmatsui@gcc.gnu.org> <20240215152037.720162-1-kmatsui@gcc.gnu.org> MIME-Version: 1.0 X-Proofpoint-ORIG-GUID: aUt2eEoQGi6Ev-E8VTYFzu68RnSAt0ov X-Proofpoint-GUID: aUt2eEoQGi6Ev-E8VTYFzu68RnSAt0ov X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-02-15_14,2024-02-14_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 lowpriorityscore=0 phishscore=0 priorityscore=1501 mlxscore=0 adultscore=0 clxscore=1034 malwarescore=0 impostorscore=0 mlxlogscore=525 bulkscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2311290000 definitions=main-2402150123 X-Spam-Status: No, score=-13.2 required=5.0 tests=BAYES_00, GIT_PATCH_0, JMQ_SPF_NEUTRAL, KAM_DMARC_STATUS, RCVD_IN_DNSWL_LOW, SPF_HELO_NONE, SPF_NEUTRAL, 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 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1790969332274721832 X-GMAIL-MSGID: 1790978892688472273 This patch implements built-in trait for std::decay. gcc/cp/ChangeLog: * cp-trait.def: Define __decay. * semantics.cc (finish_trait_type): Handle CPTK_DECAY. gcc/testsuite/ChangeLog: * g++.dg/ext/has-builtin-1.C: Test existence of __decay. * g++.dg/ext/decay.C: New test. Signed-off-by: Ken Matsui --- gcc/cp/cp-trait.def | 1 + gcc/cp/semantics.cc | 12 ++++++++ gcc/testsuite/g++.dg/ext/decay.C | 39 ++++++++++++++++++++++++ gcc/testsuite/g++.dg/ext/has-builtin-1.C | 3 ++ 4 files changed, 55 insertions(+) create mode 100644 gcc/testsuite/g++.dg/ext/decay.C diff --git a/gcc/cp/cp-trait.def b/gcc/cp/cp-trait.def index 9e8f9eb38b8..11270f3ae6b 100644 --- a/gcc/cp/cp-trait.def +++ b/gcc/cp/cp-trait.def @@ -51,6 +51,7 @@ DEFTRAIT_TYPE (ADD_LVALUE_REFERENCE, "__add_lvalue_reference", 1) DEFTRAIT_TYPE (ADD_POINTER, "__add_pointer", 1) DEFTRAIT_TYPE (ADD_RVALUE_REFERENCE, "__add_rvalue_reference", 1) +DEFTRAIT_TYPE (DECAY, "__decay", 1) DEFTRAIT_EXPR (HAS_NOTHROW_ASSIGN, "__has_nothrow_assign", 1) DEFTRAIT_EXPR (HAS_NOTHROW_CONSTRUCTOR, "__has_nothrow_constructor", 1) DEFTRAIT_EXPR (HAS_NOTHROW_COPY, "__has_nothrow_copy", 1) diff --git a/gcc/cp/semantics.cc b/gcc/cp/semantics.cc index f437e272ea6..256e7ef8166 100644 --- a/gcc/cp/semantics.cc +++ b/gcc/cp/semantics.cc @@ -12785,6 +12785,18 @@ finish_trait_type (cp_trait_kind kind, tree type1, tree type2, return type1; return cp_build_reference_type (type1, /*rval=*/true); + case CPTK_DECAY: + if (TYPE_REF_P (type1)) + type1 = TREE_TYPE (type1); + + if (TREE_CODE (type1) == ARRAY_TYPE) + return finish_trait_type (CPTK_ADD_POINTER, TREE_TYPE (type1), type2, + complain); + else if (TREE_CODE (type1) == FUNCTION_TYPE) + return finish_trait_type (CPTK_ADD_POINTER, type1, type2, complain); + else + return cv_unqualified (type1); + case CPTK_REMOVE_ALL_EXTENTS: return strip_array_types (type1); diff --git a/gcc/testsuite/g++.dg/ext/decay.C b/gcc/testsuite/g++.dg/ext/decay.C new file mode 100644 index 00000000000..cf224b7452c --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/decay.C @@ -0,0 +1,39 @@ +// { dg-do compile { target c++11 } } + +#define SA(X) static_assert((X),#X) + +// class ClassType { }; + +// Positive tests. +using test1_type = __decay(bool); +SA(__is_same(test1_type, bool)); + +// NB: DR 705. +using test2_type = __decay(const int); +SA(__is_same(test2_type, int)); + +using test3_type = __decay(int[4]); +SA(__is_same(test3_type, __remove_extent(int[4])*)); + +using fn_type = void (); +using test4_type = __decay(fn_type); +SA(__is_same(test4_type, __add_pointer(fn_type))); + +using cfn_type = void () const; +using test5_type = __decay(cfn_type); +SA(__is_same(test5_type, cfn_type)); + +// SA(__is_same(__add_rvalue_reference(int), int&&)); +// SA(__is_same(__add_rvalue_reference(int&&), int&&)); +// SA(__is_same(__add_rvalue_reference(int&), int&)); +// SA(__is_same(__add_rvalue_reference(const int), const int&&)); +// SA(__is_same(__add_rvalue_reference(int*), int*&&)); +// SA(__is_same(__add_rvalue_reference(ClassType&&), ClassType&&)); +// SA(__is_same(__add_rvalue_reference(ClassType), ClassType&&)); +// SA(__is_same(__add_rvalue_reference(int(int)), int(&&)(int))); +// SA(__is_same(__add_rvalue_reference(void), void)); +// SA(__is_same(__add_rvalue_reference(const void), const void)); +// SA(__is_same(__add_rvalue_reference(bool(int) const), bool(int) const)); +// SA(__is_same(__add_rvalue_reference(bool(int) &), bool(int) &)); +// SA(__is_same(__add_rvalue_reference(bool(int) const &&), bool(int) const &&)); +// SA(__is_same(__add_rvalue_reference(bool(int)), bool(&&)(int))); diff --git a/gcc/testsuite/g++.dg/ext/has-builtin-1.C b/gcc/testsuite/g++.dg/ext/has-builtin-1.C index 9d7e59b47fb..5b590db1cf6 100644 --- a/gcc/testsuite/g++.dg/ext/has-builtin-1.C +++ b/gcc/testsuite/g++.dg/ext/has-builtin-1.C @@ -11,6 +11,9 @@ #if !__has_builtin (__add_rvalue_reference) # error "__has_builtin (__add_rvalue_reference) failed" #endif +#if !__has_builtin (__decay) +# error "__has_builtin (__decay) failed" +#endif #if !__has_builtin (__builtin_addressof) # error "__has_builtin (__builtin_addressof) failed" #endif From patchwork Thu Feb 15 15:20:35 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ken Matsui X-Patchwork-Id: 201556 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:b825:b0:106:860b:bbdd with SMTP id da37csp476552dyb; Thu, 15 Feb 2024 07:28:54 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCWof/GhZLeNt6GLKQ0FqQmiupzHaYJ+zhZAirWRXYnescjSCggg37kNbrPsiLr4RBdh5lsbhqImhg8CWDAkd67zv+wieA== X-Google-Smtp-Source: AGHT+IFAH3CmpZ1esqBgWSCRGexCkOCWjGO5xinBKiQyJ/7mTbB7QaQL58W2VVd7d7T0iNCDuzH+ X-Received: by 2002:a05:620a:3956:b0:787:2bc5:b455 with SMTP id qs22-20020a05620a395600b007872bc5b455mr2222968qkn.6.1708010934117; Thu, 15 Feb 2024 07:28:54 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1708010934; cv=pass; d=google.com; s=arc-20160816; b=Fe0cfX2CJyk7+z/oGd11wwsk1DIQgE+t7jSUNDWdYBjSc/iX0Snyu+kLWbTKqkxcuZ sOpz2nDt8d/gadrgjMSD7CEbw57miBuKySSH37unilDCmQ71qdnXPXrKoG46SE2Le5dl 3dtf5taRpYgHA8ORxxopflViqXdQVI5T+TEu0YOrbhB8JEQU2FNtd6JT+u9ufoBsSs6A LqAcIgNTgGJtiSrkHC8Z+UXSiVKdRs8tOrScZ6rXjLzG4lmDvoAYBJmy0aI29V9yImi9 QPPulki54zkf9BerhdczucPPvgjAwcwBbkiYgUEH7K0k4vt9Wz/4mg9T/75N7HYOsGJ+ uVPg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:arc-filter:dmarc-filter:delivered-to:dkim-signature :dkim-filter; bh=FcrP5J1TKT7sLeIjJ7l3JXWWfvzgqOzJGCJ6RB58rDs=; fh=kSSy/oyUXqQD15FLeKdymIgDBFPFITPA1Gj52CNOxRQ=; b=QV01/UjY7X8jVS/hgRIC3uqyp+U8Lr+JNhmq5Rd3w7Y0eS0swovqSybbKOjL6wsNm+ /Cv5fVsXipPnc8JDTSlEG/WMH7EhrqondnyNIQlyBviWLq7n+2pBM2sPy0yUnnqbyri/ 5i4ISt1IHmTxnVeVFpsa7gwdbPn87iT+T8tNfSOsLOadvR3yZQW6g3Rsce8RoUi4CIAp InHJ/SXZw4SUlXHIdZayIex8DUn8ZVP8P5R0A6xDK/hNxUAp3bwkHkkiPeldsFsJ8src 9bePz3SIRkNmcwpUvUBWEb3ZnXqn5sLcicIZf4EeDWOTaBIdewG++sDIREFen3NTbJaQ zFPA==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=Q98cvpUt; arc=pass (i=1); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from server2.sourceware.org (server2.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id h5-20020a05620a21c500b007873ae574aasi820651qka.240.2024.02.15.07.28.54 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Feb 2024 07:28:54 -0800 (PST) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) client-ip=8.43.85.97; Authentication-Results: mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=Q98cvpUt; arc=pass (i=1); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id BB191384CBBB for ; Thu, 15 Feb 2024 15:28:53 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org BB191384CBBB DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1708010933; bh=FcrP5J1TKT7sLeIjJ7l3JXWWfvzgqOzJGCJ6RB58rDs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From; b=Q98cvpUtGvdtSWyVuUELgz3251Nf4KlHK9spbuMtDWq5IF+Uj0/pyKzxKCAv8NvLe 8TVCqod7+orYl8M1KpPzWXndDODorEAZCkRYrj6rdHmRQ+XIiNzhnz/gQ9BR1IciG2 +asZrlQVKmPSmWbymrcscAQlfW4mbIVpsAd8NqMU= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mx0b-00641c01.pphosted.com (mx0b-00641c01.pphosted.com [205.220.177.146]) by sourceware.org (Postfix) with ESMTPS id 859D938654A1; Thu, 15 Feb 2024 15:21:16 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 859D938654A1 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=gcc.gnu.org Authentication-Results: sourceware.org; spf=fail smtp.mailfrom=gcc.gnu.org ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 859D938654A1 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=205.220.177.146 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1708010483; cv=none; b=PKwQEsdfztb6J8dXRJZ66NM+Yy9O/Ajw/GppZnAVyL166OMBNzw0naxhrmieg6Vpd6RmCGWCf0hIXUw2BU6O36oKcblk8R3+S80udxF9l7UQJzVfb2el5iulhESgcj/5wyRuAszeFAlkttX6mTRKO1D9DCQ/dNsoNxe15UDTsq0= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1708010483; c=relaxed/simple; bh=FQrfDuZxvdnK0SsdsOow2XqmwdJuOwFfYrJfY4elRNk=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=tEzLSOej4QQ4igUb3VOrAYcSnIelw7idD2I1YxWl4U0u5hjAtICtEzXeWH0/94sEiPQgjIA6HxTahwLrI+i84j9qxDviYCTVSUjVy6ydMjESbJboGGtLrXIdcPWqYyWzLdJDT38Kb006I9cIRaGDRGbOg5Jmq+ZOT8bgiy9txCs= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from pps.filterd (m0247476.ppops.net [127.0.0.1]) by mx0a-00641c01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 41FFK7rC010200; Thu, 15 Feb 2024 15:21:16 GMT Received: from mxout21.s.uw.edu (mxout21.s.uw.edu [140.142.32.139]) by mx0a-00641c01.pphosted.com (PPS) with ESMTPS id 3w92uh6rp0-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 15 Feb 2024 15:21:15 +0000 Received: from smtp.washington.edu (smtp.washington.edu [140.142.234.157]) by mxout21.s.uw.edu (8.14.4+UW20.07/8.14.4+UW24.02) with ESMTP id 41FFKl8e013150 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 15 Feb 2024 07:20:47 -0800 X-Auth-Received: from kmatsui-ThinkPad-X1-Carbon-Gen-9.dhcp4.washington.edu ([10.154.74.143]) (authenticated authid=kmatsui) by smtp.washington.edu (8.16.1+UW21.10/8.14.4+UW24.02) with ESMTPSA id 41FFKkgw029956 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 15 Feb 2024 07:20:47 -0800 X-UW-Orig-Sender: kmatsui@smtp.washington.edu From: Ken Matsui To: gcc-patches@gcc.gnu.org Cc: libstdc++@gcc.gnu.org, Ken Matsui Subject: [PATCH v5 12/14] libstdc++: Optimize std::decay compilation performance Date: Thu, 15 Feb 2024 07:20:35 -0800 Message-ID: <20240215152037.720162-12-kmatsui@gcc.gnu.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240215152037.720162-1-kmatsui@gcc.gnu.org> References: <20240215045258.3025806-1-kmatsui@gcc.gnu.org> <20240215152037.720162-1-kmatsui@gcc.gnu.org> MIME-Version: 1.0 X-Proofpoint-GUID: SrDU0ZPiy51OkGPeRyOtgMk5q9IeMWEV X-Proofpoint-ORIG-GUID: SrDU0ZPiy51OkGPeRyOtgMk5q9IeMWEV X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-02-15_14,2024-02-14_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 mlxlogscore=793 mlxscore=0 priorityscore=1501 malwarescore=0 spamscore=0 impostorscore=0 adultscore=0 phishscore=0 bulkscore=0 clxscore=1034 lowpriorityscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2311290000 definitions=main-2402150123 X-Spam-Status: No, score=-13.3 required=5.0 tests=BAYES_00, GIT_PATCH_0, JMQ_SPF_NEUTRAL, KAM_DMARC_STATUS, RCVD_IN_DNSWL_LOW, SPF_HELO_NONE, SPF_NEUTRAL, 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 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1790969498306406261 X-GMAIL-MSGID: 1790979272928335677 This patch optimizes the compilation performance of std::decay by dispatching to the new __decay built-in trait. libstdc++-v3/ChangeLog: * include/std/type_traits (decay): Use __decay built-in trait. Signed-off-by: Ken Matsui --- libstdc++-v3/include/std/type_traits | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/libstdc++-v3/include/std/type_traits b/libstdc++-v3/include/std/type_traits index 219d36fabba..90718d772dd 100644 --- a/libstdc++-v3/include/std/type_traits +++ b/libstdc++-v3/include/std/type_traits @@ -2288,6 +2288,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION /// @cond undocumented +#if _GLIBCXX_USE_BUILTIN_TRAIT(__decay) + template + struct decay + { using type = __decay(_Tp); }; +#else // Decay trait for arrays and functions, used for perfect forwarding // in make_pair, make_tuple, etc. template @@ -2319,6 +2324,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION template struct decay<_Tp&&> { using type = typename __decay_selector<_Tp>::type; }; +#endif /// @cond undocumented From patchwork Thu Feb 15 15:20:36 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ken Matsui X-Patchwork-Id: 201550 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:b825:b0:106:860b:bbdd with SMTP id da37csp474899dyb; Thu, 15 Feb 2024 07:26:10 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCVHHZECH9SU9xmrUiu1R/wC8f2Sw1xqyyqy5Ue/BlUCTTSz8UmzfWQGd5QVz+bvVeInDNKBzuvb954I434zbDDCbfdFRg== X-Google-Smtp-Source: AGHT+IF1MO5Uv+3Vv+HItXzauMuugn6dWENSibXnlKoWQB+iC3XGhVNAqRSLXy8/HDqSPJORBUBY X-Received: by 2002:a05:620a:21db:b0:787:273e:287f with SMTP id h27-20020a05620a21db00b00787273e287fmr2292204qka.18.1708010769844; Thu, 15 Feb 2024 07:26:09 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1708010769; cv=pass; d=google.com; s=arc-20160816; b=L3g31d/p5aJ2JpOinuz548zxKYplE/zQXLPSduVnxrbLsH+rX9D6m3iMeRP/UbkFS4 I8Bg3PAEWY+LNAMwaUss2KbjkdbiQbbAH2fRriRs8EXJSMjMdEoKx7jtn8mGHkbhUDmz Muh2C98+8ZuaNZGQPazzc51fVAOZQsxjQZ+GOtoR0AP90FwHUTwNCoTw8vHfpBatr2x+ oeyfBCI7KnYKCIpIQjtCWGVNOqE3+Ps4fI9dtNotT8v7F5E2NfUTB0UwANWPYKSm+Yhw CewUxJUJEaMdX7tF/ochMcTo0sA0xVexQo/xH/y/WPl1osWGGQmqBUkENnxR3ZKyOisa osUw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:arc-filter:dmarc-filter:delivered-to:dkim-signature :dkim-filter; bh=kZ+K5tpR30j7s72OPm4D4inf8pVx4OAHrDqPRRsYLEg=; fh=kSSy/oyUXqQD15FLeKdymIgDBFPFITPA1Gj52CNOxRQ=; b=qvMt9XTpLQqnquUaA8tt7Bs4IlVGAPILRWrSxQrtT0Z/iw+ss3rOCrGCTn9PWNn8HH cWOjVv0H82gA9W5pU668S9AZxKSzwukxVtTJTHs8g+ifmX54tklJBW2V1S2p0QbCxTA5 Vf4/7wwDFy9BFvta7Za8yo+jZd0jMz0geD2wD6n6+AJVsRS6yJrEBbgF2yvqFvqUf82v Z0rNTkjXPl+DubXjZ+5dt/OgjTZJ7hsbuCfvTKuZGOQ+e5OgC2Qc0ZKf+DTO1VI8lNKp OK3MV3H4CfZJwjiLSKdgsSKNAScel1Xa4gdTlnfWPwMbXLjqfZ+KdrdZsM9JWkO7cy3P /W8w==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=s6v13fzO; arc=pass (i=1); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from server2.sourceware.org (server2.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id g25-20020a05620a109900b007873204bc3esi1659627qkk.645.2024.02.15.07.26.09 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Feb 2024 07:26:09 -0800 (PST) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) client-ip=8.43.85.97; Authentication-Results: mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=s6v13fzO; arc=pass (i=1); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 74FD8384DEFD for ; Thu, 15 Feb 2024 15:26:09 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 74FD8384DEFD DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1708010769; bh=kZ+K5tpR30j7s72OPm4D4inf8pVx4OAHrDqPRRsYLEg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From; b=s6v13fzONURq2wjKqoJ6SWeYBLYtmvz2+wPibfLT8SU3uzrt1I9OBHlc2ZTXLeIDd d36fwmG7pBaNEEVe/abujY4Yw/eEapLAQuF7DQscenP7YWRY96Gf4gx4Y/gl5Eanjh 8GDQU29nheQ9QivGwzmISic6gKpCGoizw4Q76kvo= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mx0b-00641c01.pphosted.com (mx0b-00641c01.pphosted.com [205.220.177.146]) by sourceware.org (Postfix) with ESMTPS id D66A13865C30; Thu, 15 Feb 2024 15:21:15 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org D66A13865C30 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=gcc.gnu.org Authentication-Results: sourceware.org; spf=fail smtp.mailfrom=gcc.gnu.org ARC-Filter: OpenARC Filter v1.0.0 sourceware.org D66A13865C30 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=205.220.177.146 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1708010484; cv=none; b=VJUOL259eDKQFgtSQoII0AQGjeOYWd0hpXZwnSverTW9EUiySF+/lkuksAwAhHlFT0nJysVGz5GGNG3g92cUfjxnrgPbxADAIoHiW3v5+mq4+othjgo6YcX2xsuQIgdlIseZuO5i8PZB15Vhdf8Kzylphn7OjR+qjnHXPtG7Z5E= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1708010484; c=relaxed/simple; bh=jhTom434eKiLRibhuOPeZSdzON9GncPNbwMCnXqEZEE=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=b6E4c1TrL8gEKFVWsy+J+0Povw0g+GlPDJJDb0IeURD4vkMNgKG7EwJGpj74u/VubSzkqgT7UbH3jdDzq6mbJ9VNefTfR/te78bPF7djNWQBRjm4kZH75E9ffoplpFprlNLRGtYqJyQGyX4qPpN1ebUAkrEYDoklme6+sNUEpY4= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from pps.filterd (m0247478.ppops.net [127.0.0.1]) by mx0a-00641c01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 41FFC0K5006651; Thu, 15 Feb 2024 15:21:15 GMT Received: from mxout21.s.uw.edu (mxout21.s.uw.edu [140.142.32.139]) by mx0a-00641c01.pphosted.com (PPS) with ESMTPS id 3w94rewhkr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 15 Feb 2024 15:21:15 +0000 Received: from smtp.washington.edu (smtp.washington.edu [140.142.234.157]) by mxout21.s.uw.edu (8.14.4+UW20.07/8.14.4+UW24.02) with ESMTP id 41FFKlJq013152 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 15 Feb 2024 07:20:47 -0800 X-Auth-Received: from kmatsui-ThinkPad-X1-Carbon-Gen-9.dhcp4.washington.edu ([10.154.74.143]) (authenticated authid=kmatsui) by smtp.washington.edu (8.16.1+UW21.10/8.14.4+UW24.02) with ESMTPSA id 41FFKkgx029956 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 15 Feb 2024 07:20:47 -0800 X-UW-Orig-Sender: kmatsui@smtp.washington.edu From: Ken Matsui To: gcc-patches@gcc.gnu.org Cc: libstdc++@gcc.gnu.org, Ken Matsui Subject: [PATCH v5 13/14] c++: Implement __rank built-in trait Date: Thu, 15 Feb 2024 07:20:36 -0800 Message-ID: <20240215152037.720162-13-kmatsui@gcc.gnu.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240215152037.720162-1-kmatsui@gcc.gnu.org> References: <20240215045258.3025806-1-kmatsui@gcc.gnu.org> <20240215152037.720162-1-kmatsui@gcc.gnu.org> MIME-Version: 1.0 X-Proofpoint-ORIG-GUID: 1Dm2bOy585TDcIs6OccP2udd2PkJGzxO X-Proofpoint-GUID: 1Dm2bOy585TDcIs6OccP2udd2PkJGzxO X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-02-15_14,2024-02-14_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 priorityscore=1501 mlxscore=0 malwarescore=0 bulkscore=0 spamscore=0 mlxlogscore=679 lowpriorityscore=0 adultscore=0 suspectscore=0 clxscore=1034 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2311290000 definitions=main-2402150123 X-Spam-Status: No, score=-13.3 required=5.0 tests=BAYES_00, GIT_PATCH_0, JMQ_SPF_NEUTRAL, KAM_DMARC_STATUS, RCVD_IN_DNSWL_LOW, SPF_HELO_NONE, SPF_NEUTRAL, 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 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1790979100892287560 X-GMAIL-MSGID: 1790979100892287560 This patch implements built-in trait for std::rank. gcc/cp/ChangeLog: * cp-trait.def: Define __rank. * semantics.cc (trait_expr_value): Handle CPTK_RANK. (finish_trait_expr): Likewise. gcc/testsuite/ChangeLog: * g++.dg/ext/has-builtin-1.C: Test existence of __rank. * g++.dg/ext/rank.C: New test. Signed-off-by: Ken Matsui --- gcc/cp/cp-trait.def | 1 + gcc/cp/semantics.cc | 18 ++++++++++++++++-- gcc/testsuite/g++.dg/ext/has-builtin-1.C | 3 +++ gcc/testsuite/g++.dg/ext/rank.C | 14 ++++++++++++++ 4 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/g++.dg/ext/rank.C diff --git a/gcc/cp/cp-trait.def b/gcc/cp/cp-trait.def index 11270f3ae6b..3d5a7970563 100644 --- a/gcc/cp/cp-trait.def +++ b/gcc/cp/cp-trait.def @@ -95,6 +95,7 @@ DEFTRAIT_EXPR (IS_TRIVIALLY_ASSIGNABLE, "__is_trivially_assignable", 2) DEFTRAIT_EXPR (IS_TRIVIALLY_CONSTRUCTIBLE, "__is_trivially_constructible", -1) DEFTRAIT_EXPR (IS_TRIVIALLY_COPYABLE, "__is_trivially_copyable", 1) DEFTRAIT_EXPR (IS_UNION, "__is_union", 1) +DEFTRAIT_EXPR (RANK, "__rank", 1) DEFTRAIT_EXPR (REF_CONSTRUCTS_FROM_TEMPORARY, "__reference_constructs_from_temporary", 2) DEFTRAIT_EXPR (REF_CONVERTS_FROM_TEMPORARY, "__reference_converts_from_temporary", 2) DEFTRAIT_TYPE (REMOVE_ALL_EXTENTS, "__remove_all_extents", 1) diff --git a/gcc/cp/semantics.cc b/gcc/cp/semantics.cc index 256e7ef8166..4f285909b83 100644 --- a/gcc/cp/semantics.cc +++ b/gcc/cp/semantics.cc @@ -12538,6 +12538,9 @@ trait_expr_value (cp_trait_kind kind, tree type1, tree type2) case CPTK_IS_DEDUCIBLE: return type_targs_deducible_from (type1, type2); + /* __rank is handled in finish_trait_expr. */ + case CPTK_RANK: + #define DEFTRAIT_TYPE(CODE, NAME, ARITY) \ case CPTK_##CODE: #include "cp-trait.def" @@ -12698,6 +12701,7 @@ finish_trait_expr (location_t loc, cp_trait_kind kind, tree type1, tree type2) case CPTK_IS_SAME: case CPTK_IS_SCOPED_ENUM: case CPTK_IS_UNION: + case CPTK_RANK: break; case CPTK_IS_LAYOUT_COMPATIBLE: @@ -12729,8 +12733,18 @@ finish_trait_expr (location_t loc, cp_trait_kind kind, tree type1, tree type2) gcc_unreachable (); } - tree val = (trait_expr_value (kind, type1, type2) - ? boolean_true_node : boolean_false_node); + tree val; + if (kind == CPTK_RANK) + { + size_t rank = 0; + for (; TREE_CODE (type1) == ARRAY_TYPE; type1 = TREE_TYPE (type1)) + ++rank; + val = build_int_cst (size_type_node, rank); + } + else + val = (trait_expr_value (kind, type1, type2) + ? boolean_true_node : boolean_false_node); + return maybe_wrap_with_location (val, loc); } diff --git a/gcc/testsuite/g++.dg/ext/has-builtin-1.C b/gcc/testsuite/g++.dg/ext/has-builtin-1.C index 5b590db1cf6..a00193c1a81 100644 --- a/gcc/testsuite/g++.dg/ext/has-builtin-1.C +++ b/gcc/testsuite/g++.dg/ext/has-builtin-1.C @@ -167,6 +167,9 @@ #if !__has_builtin (__is_union) # error "__has_builtin (__is_union) failed" #endif +#if !__has_builtin (__rank) +# error "__has_builtin (__rank) failed" +#endif #if !__has_builtin (__reference_constructs_from_temporary) # error "__has_builtin (__reference_constructs_from_temporary) failed" #endif diff --git a/gcc/testsuite/g++.dg/ext/rank.C b/gcc/testsuite/g++.dg/ext/rank.C new file mode 100644 index 00000000000..bab062d776e --- /dev/null +++ b/gcc/testsuite/g++.dg/ext/rank.C @@ -0,0 +1,14 @@ +// { dg-do compile { target c++11 } } + +#define SA(X) static_assert((X),#X) + +class ClassType { }; + +SA(__rank(int) == 0); +SA(__rank(int[2]) == 1); +SA(__rank(int[][4]) == 2); +SA(__rank(int[2][2][4][4][6][6]) == 6); +SA(__rank(ClassType) == 0); +SA(__rank(ClassType[2]) == 1); +SA(__rank(ClassType[][4]) == 2); +SA(__rank(ClassType[2][2][4][4][6][6]) == 6); From patchwork Thu Feb 15 15:20:37 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ken Matsui X-Patchwork-Id: 201553 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:b825:b0:106:860b:bbdd with SMTP id da37csp475690dyb; Thu, 15 Feb 2024 07:27:28 -0800 (PST) X-Forwarded-Encrypted: i=3; AJvYcCWfEYiCGttFDvzxr5ZVIsZq58S+e2rzyYxC2qV0wuoG5GFEb/8NGzqPRyZLgi3oyJIW9eGVa8E0YgbXpRj0QV2nlrmSMg== X-Google-Smtp-Source: AGHT+IF4OLaUU88AVHBT8YHQtwq94DbfTCHcRafcw9eznB8TVUbSmX7jMGL6+Xu5+xlTD5ppQzFH X-Received: by 2002:a05:620a:2043:b0:785:96a6:f6ce with SMTP id d3-20020a05620a204300b0078596a6f6cemr2175860qka.43.1708010847810; Thu, 15 Feb 2024 07:27:27 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1708010847; cv=pass; d=google.com; s=arc-20160816; b=murRmonC2g0NALdTY2BAXOELnQbPbI9bLDLds8T84X+AALn7g2ktcozqDKN7xKETEW yZFAqzLvcZ6pr5eU3WnhTwOjerPcsPPj198mizDYIW7A4/HFEseFU/skJcpcv0KEn8Hg slUM4/Q7RLEu4r7qu2c5RcAocjrKNz4kMcIY8Q3PanUThS9ZyYeAn2K2jf0IEYFNY5Vj XQFHEF3IBgMH9VMIrclAnb1lPO74+BYOuyZ4Hkl4TQ/PE3M5dBHs0xLLKnY9Zyv66yhz JKG1/qnJMp2uDmaTLPaG+E6lShpZe11yCYfLz+D3B6hjEX3bxkv7uoLRDoHzJWKPIil3 nVQA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:arc-filter:dmarc-filter:delivered-to:dkim-signature :dkim-filter; bh=Eel5yyb5iGCvlyloWbXZJDQQyPxGiqGZhQd/6FSvOyc=; fh=kSSy/oyUXqQD15FLeKdymIgDBFPFITPA1Gj52CNOxRQ=; b=PIKEMeDMcnKHI942SFS8PKX+NVvBCr0R7R3uZ/dRp4PQngf2k1nckrvdgxl2Cj89J/ K2I/B5kAoLF2KzOrS7HjC01NbBhV4Wpd5ZUmhU2A7jV7lc9UfyUqtFfhovxXIpYPnagu El/29rLp5DWIkHmNmRDbkZAcuHHWWHBzRIk31MlpzKg8rQcxR0YPJAkVlOo+b5+WcVqU v56r3E+EBWQO7hbg96PmtCLwJFttMYclxiToHVP0jeb3/uQ1diOl8QcFEy1+7qvOcwQV 4nYMIT19oXyeSn3ZOSJWC7LeaJiGA6EbIifbjgRkCFBtsXdG5wU0Aq/5ZvYEbIMgInPh xOVg==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b="Z/IWwa8g"; arc=pass (i=1); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from server2.sourceware.org (server2.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id c5-20020a05620a0ce500b00785ba7e456csi1633439qkj.740.2024.02.15.07.27.27 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 15 Feb 2024 07:27:27 -0800 (PST) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) client-ip=8.43.85.97; Authentication-Results: mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b="Z/IWwa8g"; arc=pass (i=1); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gnu.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 75F7B384F4A0 for ; Thu, 15 Feb 2024 15:27:27 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 75F7B384F4A0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1708010847; bh=Eel5yyb5iGCvlyloWbXZJDQQyPxGiqGZhQd/6FSvOyc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From; b=Z/IWwa8gtWW9D1QlL9I/7MgK0SpdGsVJr0yQuiD+tAHn7xLNHyB6KqZKhpowmC0TQ zLL5D8DY9Y2jbrw5uk/uCTEywBezXqyWiSR1wv0QXR32klsRrL8wJxFYwFmdZhbUUZ rxCbRF8uIoO62D6uOtWMcdwRUscXEvxVjSYdqzro= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mx0a-00641c01.pphosted.com (mx0a-00641c01.pphosted.com [205.220.165.146]) by sourceware.org (Postfix) with ESMTPS id AE3383865C26; Thu, 15 Feb 2024 15:21:10 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org AE3383865C26 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=gcc.gnu.org Authentication-Results: sourceware.org; spf=fail smtp.mailfrom=gcc.gnu.org ARC-Filter: OpenARC Filter v1.0.0 sourceware.org AE3383865C26 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=205.220.165.146 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1708010476; cv=none; b=aU5CAn/6Og/sL24bhKRrWjCgtTtn/nZM/Lbx84JEMLgpfkZBA0Ac79RQpdPABAKpR25A2QTKji0Dx5/CaFv0gpvqAn6Pvvozg5qQ/tvcl6ma+Zp0G4n48AA5s6MfwuqOcrxMkdeUNB4taMkpRY2Lza9xlUAEudJ3UdvHeZrWPUc= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1708010476; c=relaxed/simple; bh=kUrcYT21VjtMtAwzB52Z+aGIcbSesmeIBNELtElY9UY=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=Sg3qdtdqk7F5MkPS8aq/rX9C9FxKeFSlXAw0yWySme0ocDwVUrQEuggRwtNb5JBWSgo0m47Nry/WZJCaB1b/Oa9kozgFvM6OrMutO1Ymqae9bzIrTu3JlKnl06oSfNdQ59hulzCihKLay+k/fc92Aoc0wmnVoCfD6Dqv6c+N6gc= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from pps.filterd (m0247470.ppops.net [127.0.0.1]) by mx0a-00641c01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 41FFDpOl025608; Thu, 15 Feb 2024 15:21:09 GMT Received: from mxout25.s.uw.edu (mxout25.s.uw.edu [140.142.234.175]) by mx0a-00641c01.pphosted.com (PPS) with ESMTPS id 3w97csc6fc-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 15 Feb 2024 15:21:09 +0000 Received: from smtp.washington.edu (smtp.washington.edu [140.142.234.157]) by mxout25.s.uw.edu (8.14.4+UW20.07/8.14.4+UW24.02) with ESMTP id 41FFKlVg030366 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 15 Feb 2024 07:20:47 -0800 X-Auth-Received: from kmatsui-ThinkPad-X1-Carbon-Gen-9.dhcp4.washington.edu ([10.154.74.143]) (authenticated authid=kmatsui) by smtp.washington.edu (8.16.1+UW21.10/8.14.4+UW24.02) with ESMTPSA id 41FFKkh0029956 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 15 Feb 2024 07:20:47 -0800 X-UW-Orig-Sender: kmatsui@smtp.washington.edu From: Ken Matsui To: gcc-patches@gcc.gnu.org Cc: libstdc++@gcc.gnu.org, Ken Matsui Subject: [PATCH v5 14/14] libstdc++: Optimize std::rank compilation performance Date: Thu, 15 Feb 2024 07:20:37 -0800 Message-ID: <20240215152037.720162-14-kmatsui@gcc.gnu.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240215152037.720162-1-kmatsui@gcc.gnu.org> References: <20240215045258.3025806-1-kmatsui@gcc.gnu.org> <20240215152037.720162-1-kmatsui@gcc.gnu.org> MIME-Version: 1.0 X-Proofpoint-GUID: cutrV_CUjUu0MeGYW60OP0JK1uJ_6PjE X-Proofpoint-ORIG-GUID: cutrV_CUjUu0MeGYW60OP0JK1uJ_6PjE X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-02-15_14,2024-02-14_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 adultscore=0 mlxlogscore=727 clxscore=1034 priorityscore=1501 mlxscore=0 phishscore=0 suspectscore=0 lowpriorityscore=0 bulkscore=0 spamscore=0 impostorscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2311290000 definitions=main-2402150123 X-Spam-Status: No, score=-12.9 required=5.0 tests=BAYES_00, GIT_PATCH_0, JMQ_SPF_NEUTRAL, KAM_DMARC_STATUS, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_NEUTRAL, 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 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1790979182855074738 X-GMAIL-MSGID: 1790979182855074738 This patch optimizes the compilation performance of std::rank by dispatching to the new __rank built-in trait. libstdc++-v3/ChangeLog: * include/std/type_traits (rank): Use __rank built-in trait. Signed-off-by: Ken Matsui --- libstdc++-v3/include/std/type_traits | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/libstdc++-v3/include/std/type_traits b/libstdc++-v3/include/std/type_traits index 90718d772dd..5d2e6eaa2a2 100644 --- a/libstdc++-v3/include/std/type_traits +++ b/libstdc++-v3/include/std/type_traits @@ -1445,6 +1445,11 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION }; /// rank +#if _GLIBCXX_USE_BUILTIN_TRAIT(__rank) + template + struct rank + : public integral_constant { }; +#else template struct rank : public integral_constant { }; @@ -1456,6 +1461,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION template struct rank<_Tp[]> : public integral_constant::value> { }; +#endif /// extent template