public inbox for libstdc++@gcc.gnu.org
 help / color / mirror / Atom feed
From: Patrick Palka <ppalka@redhat.com>
To: Ken Matsui <kmatsui@gcc.gnu.org>
Cc: gcc-patches@gcc.gnu.org, libstdc++@gcc.gnu.org, jason@redhat.com
Subject: Re: [PATCH v17 02/39] c-family, c++: Look up built-in traits through gperf
Date: Thu, 12 Oct 2023 13:02:59 -0400 (EDT)	[thread overview]
Message-ID: <99d01572-89ae-77a6-2a9b-c52206d6072c@idea> (raw)
In-Reply-To: <20231011215049.1052142-3-kmatsui@gcc.gnu.org>

On Wed, 11 Oct 2023, Ken Matsui wrote:

> Since RID_MAX soon reaches 255 and all traits are used approximately once in
> a C++ translation unit, this patch instead uses only RID_TRAIT_EXPR and
> RID_TRAIT_TYPE for all traits and uses gperf to look up the specific trait.
> 
> gcc/c-family/ChangeLog:
> 
> 	* c-common.cc (c_common_reswords): Map all traits to RID_TRAIT_EXPR
> 	and RID_TRAIT_TYPE instead.
> 	* c-common.h (enum rid): Remove all existing RID values for traits.
> 	Use RID_TRAIT_EXPR and RID_TRAIT_TYPE instead.
> 
> gcc/cp/ChangeLog:
> 
> 	* Make-lang.in: Add targets to generate cp-trait.gperf and
> 	cp-trait.h.
> 	* cp-objcp-common.cc (names_builtin_p): Remove all existing RID values
> 	for traits.  Use RID_TRAIT_EXPR and RID_TRAIT_TYPE instead.
> 	* parser.cc (cp_keyword_starts_decl_specifier_p): Likewise, for
> 	type-yielding traits.  Use RID_TRAIT_TYPE instead.
> 	(cp_parser_simple_type_specifier): Likewise.
> 	(cp_parser_primary_expression): Likewise, for expression-yielding
> 	traits.  Use RID_TRAIT_EXPR instead.
> 	(cp_parser_trait): Look up traits through gperf instead of enum rid.
> 	* lex.cc (init_reswords): Make ridpointers for RID_TRAIT_EXPR and
> 	RID_TRAIT_TYPE empty, which do not have corresponding unique
> 	cannonical spellings.
> 	* cp-trait-head.in: New file.
> 	* cp-trait.gperf: New file.
> 	* cp-trait.h: New file.
> 
> Signed-off-by: Ken Matsui <kmatsui@gcc.gnu.org>
> ---
>  gcc/c-family/c-common.cc  |  12 +-
>  gcc/c-family/c-common.h   |   7 +-
>  gcc/cp/Make-lang.in       |  26 ++++
>  gcc/cp/cp-objcp-common.cc |   6 +-
>  gcc/cp/cp-trait-head.in   |  30 +++++
>  gcc/cp/cp-trait.gperf     |  74 ++++++++++++
>  gcc/cp/cp-trait.h         | 247 ++++++++++++++++++++++++++++++++++++++
>  gcc/cp/lex.cc             |   5 +
>  gcc/cp/parser.cc          |  70 ++++-------
>  9 files changed, 419 insertions(+), 58 deletions(-)
>  create mode 100644 gcc/cp/cp-trait-head.in
>  create mode 100644 gcc/cp/cp-trait.gperf
>  create mode 100644 gcc/cp/cp-trait.h
> 
> diff --git a/gcc/c-family/c-common.cc b/gcc/c-family/c-common.cc
> index f044db5b797..f219ccd29e5 100644
> --- a/gcc/c-family/c-common.cc
> +++ b/gcc/c-family/c-common.cc
> @@ -508,12 +508,16 @@ const struct c_common_resword c_common_reswords[] =
>    { "wchar_t",		RID_WCHAR,	D_CXXONLY },
>    { "while",		RID_WHILE,	0 },
>  
> -#define DEFTRAIT(TCC, CODE, NAME, ARITY) \
> -  { NAME,		RID_##CODE,	D_CXXONLY },
> +#define DEFTRAIT_EXPR(CODE, NAME, ARITY) \
> +  { NAME,		RID_TRAIT_EXPR,	D_CXXONLY },
>  #include "cp/cp-trait.def"
> -#undef DEFTRAIT
> +#undef DEFTRAIT_EXPR
>    /* An alias for __is_same.  */
> -  { "__is_same_as",	RID_IS_SAME,	D_CXXONLY },
> +  { "__is_same_as",	RID_TRAIT_EXPR,	D_CXXONLY },
> +#define DEFTRAIT_TYPE(CODE, NAME, ARITY) \
> +  { NAME,		RID_TRAIT_TYPE,	D_CXXONLY },
> +#include "cp/cp-trait.def"
> +#undef DEFTRAIT_TYPE
>  
>    /* C++ transactional memory.  */
>    { "synchronized",	RID_SYNCHRONIZED, D_CXX_OBJC | D_TRANSMEM },
> diff --git a/gcc/c-family/c-common.h b/gcc/c-family/c-common.h
> index 1fdba7ef3ea..a1a641f4175 100644
> --- a/gcc/c-family/c-common.h
> +++ b/gcc/c-family/c-common.h
> @@ -168,10 +168,9 @@ enum rid
>    RID_BUILTIN_LAUNDER,
>    RID_BUILTIN_BIT_CAST,
>  
> -#define DEFTRAIT(TCC, CODE, NAME, ARITY) \
> -  RID_##CODE,
> -#include "cp/cp-trait.def"
> -#undef DEFTRAIT
> +  /* C++ traits, defined in cp-trait.def.  */
> +  RID_TRAIT_EXPR,
> +  RID_TRAIT_TYPE,
>  
>    /* C++11 */
>    RID_CONSTEXPR, RID_DECLTYPE, RID_NOEXCEPT, RID_NULLPTR, RID_STATIC_ASSERT,
> diff --git a/gcc/cp/Make-lang.in b/gcc/cp/Make-lang.in
> index 2727fb7f8cc..a67d1c3e9f3 100644
> --- a/gcc/cp/Make-lang.in
> +++ b/gcc/cp/Make-lang.in
> @@ -34,6 +34,8 @@
>  # - the compiler proper (eg: cc1plus)
>  # - define the names for selecting the language in LANGUAGES.
>  
> +AWK = @AWK@
> +
>  # Actual names to use when installing a native compiler.
>  CXX_INSTALL_NAME := $(shell echo c++|sed '$(program_transform_name)')
>  GXX_INSTALL_NAME := $(shell echo g++|sed '$(program_transform_name)')
> @@ -186,6 +188,30 @@ endif
>  # This is the file that depends on the generated header file.
>  cp/name-lookup.o: $(srcdir)/cp/std-name-hint.h
>  
> +# We always need the dependency on the .gperf file
> +# because it itself is generated.
> +ifeq ($(ENABLE_MAINTAINER_RULES), true)
> +$(srcdir)/cp/cp-trait.h: $(srcdir)/cp/cp-trait.gperf
> +else
> +$(srcdir)/cp/cp-trait.h: | $(srcdir)/cp/cp-trait.gperf
> +endif
> +	gperf -o -C -E -k '8' -D -N 'find' -L C++ \
> +		$(srcdir)/cp/cp-trait.gperf --output-file $(srcdir)/cp/cp-trait.h
> +
> +# The cp-trait.gperf file itself is generated from
> +# cp-trait-head.in and cp-trait.def files.
> +$(srcdir)/cp/cp-trait.gperf: $(srcdir)/cp/cp-trait-head.in $(srcdir)/cp/cp-trait.def
> +	cat $< > $@
> +	$(AWK) -F', *' '/^DEFTRAIT_/ { \
> +		type = (index($$1, "DEFTRAIT_TYPE") != 0 ? "true" : "false"); \
> +		gsub(/DEFTRAIT_(EXPR|TYPE) \(/, "", $$1); \
> +		gsub(/\)/, "", $$3); \
> +		print $$2", CPTK_" $$1", "$$3", "type; \
> +	}' $(srcdir)/cp/cp-trait.def >> $@
> +
> +# This is the file that depends on the generated header file.
> +cp/parser.o: $(srcdir)/cp/cp-trait.h
> +
>  components_in_prev = "bfd opcodes binutils fixincludes gas gcc gmp mpfr mpc isl gold intl ld libbacktrace libcpp libcody libdecnumber libiberty libiberty-linker-plugin libiconv zlib lto-plugin libctf libsframe"
>  components_in_prev_target = "libstdc++-v3 libsanitizer libvtv libgcc libbacktrace libphobos zlib libgomp libatomic"
>  
> diff --git a/gcc/cp/cp-objcp-common.cc b/gcc/cp/cp-objcp-common.cc
> index 93b027b80ce..c414d8f5a13 100644
> --- a/gcc/cp/cp-objcp-common.cc
> +++ b/gcc/cp/cp-objcp-common.cc
> @@ -434,10 +434,8 @@ names_builtin_p (const char *name)
>      case RID_BUILTIN_ASSOC_BARRIER:
>      case RID_BUILTIN_BIT_CAST:
>      case RID_OFFSETOF:
> -#define DEFTRAIT(TCC, CODE, NAME, ARITY) \
> -    case RID_##CODE:
> -#include "cp-trait.def"
> -#undef DEFTRAIT
> +    case RID_TRAIT_EXPR:
> +    case RID_TRAIT_TYPE:
>        return true;
>      default:
>        break;
> diff --git a/gcc/cp/cp-trait-head.in b/gcc/cp/cp-trait-head.in
> new file mode 100644
> index 00000000000..9357eea1238
> --- /dev/null
> +++ b/gcc/cp/cp-trait-head.in
> @@ -0,0 +1,30 @@
> +%language=C++
> +%define class-name cp_trait_lookup
> +%struct-type
> +%{
> +/* Copyright (C) 2023 Free Software Foundation, Inc.
> +
> +This file is part of GCC.
> +
> +GCC is free software; you can redistribute it and/or modify it under
> +the terms of the GNU General Public License as published by the Free
> +Software Foundation; either version 3, or (at your option) any later
> +version.
> +
> +GCC is distributed in the hope that it will be useful, but WITHOUT ANY
> +WARRANTY; without even the implied warranty of MERCHANTABILITY or
> +FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
> +for more details.
> +
> +You should have received a copy of the GNU General Public License
> +along with GCC; see the file COPYING3.  If not see
> +<http://www.gnu.org/licenses/>.  */
> +%}
> +struct cp_trait {
> +  const char *name;
> +  enum cp_trait_kind kind;
> +  short arity;
> +  bool type;
> +};
> +%%
> +"__is_same_as", CPTK_IS_SAME, 2, false
> diff --git a/gcc/cp/cp-trait.gperf b/gcc/cp/cp-trait.gperf
> new file mode 100644
> index 00000000000..47e3c1af499
> --- /dev/null
> +++ b/gcc/cp/cp-trait.gperf
> @@ -0,0 +1,74 @@
> +%language=C++
> +%define class-name cp_trait_lookup
> +%struct-type
> +%{
> +/* Copyright (C) 2023 Free Software Foundation, Inc.
> +
> +This file is part of GCC.
> +
> +GCC is free software; you can redistribute it and/or modify it under
> +the terms of the GNU General Public License as published by the Free
> +Software Foundation; either version 3, or (at your option) any later
> +version.
> +
> +GCC is distributed in the hope that it will be useful, but WITHOUT ANY
> +WARRANTY; without even the implied warranty of MERCHANTABILITY or
> +FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
> +for more details.
> +
> +You should have received a copy of the GNU General Public License
> +along with GCC; see the file COPYING3.  If not see
> +<http://www.gnu.org/licenses/>.  */
> +%}
> +struct cp_trait {
> +  const char *name;
> +  enum cp_trait_kind kind;
> +  short arity;
> +  bool type;
> +};
> +%%
> +"__is_same_as", CPTK_IS_SAME, 2, false
> +"__has_nothrow_assign", CPTK_HAS_NOTHROW_ASSIGN, 1, false
> +"__has_nothrow_constructor", CPTK_HAS_NOTHROW_CONSTRUCTOR, 1, false
> +"__has_nothrow_copy", CPTK_HAS_NOTHROW_COPY, 1, false
> +"__has_trivial_assign", CPTK_HAS_TRIVIAL_ASSIGN, 1, false
> +"__has_trivial_constructor", CPTK_HAS_TRIVIAL_CONSTRUCTOR, 1, false
> +"__has_trivial_copy", CPTK_HAS_TRIVIAL_COPY, 1, false
> +"__has_trivial_destructor", CPTK_HAS_TRIVIAL_DESTRUCTOR, 1, false
> +"__has_unique_object_representations", CPTK_HAS_UNIQUE_OBJ_REPRESENTATIONS, 1, false
> +"__has_virtual_destructor", CPTK_HAS_VIRTUAL_DESTRUCTOR, 1, false
> +"__is_abstract", CPTK_IS_ABSTRACT, 1, false
> +"__is_aggregate", CPTK_IS_AGGREGATE, 1, false
> +"__is_assignable", CPTK_IS_ASSIGNABLE, 2, false
> +"__is_base_of", CPTK_IS_BASE_OF, 2, false
> +"__is_class", CPTK_IS_CLASS, 1, false
> +"__is_constructible", CPTK_IS_CONSTRUCTIBLE, -1, false
> +"__is_convertible", CPTK_IS_CONVERTIBLE, 2, false
> +"__is_empty", CPTK_IS_EMPTY, 1, false
> +"__is_enum", CPTK_IS_ENUM, 1, false
> +"__is_final", CPTK_IS_FINAL, 1, false
> +"__is_layout_compatible", CPTK_IS_LAYOUT_COMPATIBLE, 2, false
> +"__is_literal_type", CPTK_IS_LITERAL_TYPE, 1, false
> +"__is_nothrow_assignable", CPTK_IS_NOTHROW_ASSIGNABLE, 2, false
> +"__is_nothrow_constructible", CPTK_IS_NOTHROW_CONSTRUCTIBLE, -1, false
> +"__is_nothrow_convertible", CPTK_IS_NOTHROW_CONVERTIBLE, 2, false
> +"__is_pointer_interconvertible_base_of", CPTK_IS_POINTER_INTERCONVERTIBLE_BASE_OF, 2, false
> +"__is_pod", CPTK_IS_POD, 1, false
> +"__is_polymorphic", CPTK_IS_POLYMORPHIC, 1, false
> +"__is_same", CPTK_IS_SAME, 2, false
> +"__is_standard_layout", CPTK_IS_STD_LAYOUT, 1, false
> +"__is_trivial", CPTK_IS_TRIVIAL, 1, false
> +"__is_trivially_assignable", CPTK_IS_TRIVIALLY_ASSIGNABLE, 2, false
> +"__is_trivially_constructible", CPTK_IS_TRIVIALLY_CONSTRUCTIBLE, -1, false
> +"__is_trivially_copyable", CPTK_IS_TRIVIALLY_COPYABLE, 1, false
> +"__is_union", CPTK_IS_UNION, 1, false
> +"__reference_constructs_from_temporary", CPTK_REF_CONSTRUCTS_FROM_TEMPORARY, 2, false
> +"__reference_converts_from_temporary", CPTK_REF_CONVERTS_FROM_TEMPORARY, 2, false
> +"__remove_cv", CPTK_REMOVE_CV, 1, true
> +"__remove_cvref", CPTK_REMOVE_CVREF, 1, true
> +"__remove_reference", CPTK_REMOVE_REFERENCE, 1, true
> +"__type_pack_element", CPTK_TYPE_PACK_ELEMENT, -1, true
> +"__underlying_type", CPTK_UNDERLYING_TYPE, 1, true
> +"__is_deducible ", CPTK_IS_DEDUCIBLE, 2, false
> +"__bases", CPTK_BASES, 1, true
> +"__direct_bases", CPTK_DIRECT_BASES, 1, true
> diff --git a/gcc/cp/cp-trait.h b/gcc/cp/cp-trait.h
> new file mode 100644
> index 00000000000..97ba8492d15
> --- /dev/null
> +++ b/gcc/cp/cp-trait.h
> @@ -0,0 +1,247 @@
> +/* C++ code produced by gperf version 3.1 */
> +/* Command-line: gperf -o -C -E -k 8 -D -N find -L C++ --output-file ../../gcc/cp/cp-trait.h ../../gcc/cp/cp-trait.gperf  */
> +
> +#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
> +      && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
> +      && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
> +      && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
> +      && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
> +      && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
> +      && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
> +      && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
> +      && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
> +      && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
> +      && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
> +      && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
> +      && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
> +      && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
> +      && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
> +      && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
> +      && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
> +      && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
> +      && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
> +      && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
> +      && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
> +      && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
> +      && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
> +/* The character set is not based on ISO-646.  */
> +#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gperf@gnu.org>."
> +#endif
> +
> +#line 4 "../../gcc/cp/cp-trait.gperf"
> +
> +/* Copyright (C) 2023 Free Software Foundation, Inc.
> +
> +This file is part of GCC.
> +
> +GCC is free software; you can redistribute it and/or modify it under
> +the terms of the GNU General Public License as published by the Free
> +Software Foundation; either version 3, or (at your option) any later
> +version.
> +
> +GCC is distributed in the hope that it will be useful, but WITHOUT ANY
> +WARRANTY; without even the implied warranty of MERCHANTABILITY or
> +FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
> +for more details.
> +
> +You should have received a copy of the GNU General Public License
> +along with GCC; see the file COPYING3.  If not see
> +<http://www.gnu.org/licenses/>.  */
> +#line 23 "../../gcc/cp/cp-trait.gperf"
> +struct cp_trait {
> +  const char *name;
> +  enum cp_trait_kind kind;
> +  short arity;
> +  bool type;
> +};
> +/* maximum key range = 79, duplicates = 0 */
> +
> +class cp_trait_lookup
> +{
> +private:
> +  static inline unsigned int hash (const char *str, size_t len);
> +public:
> +  static const struct cp_trait *find (const char *str, size_t len);
> +};
> +
> +inline unsigned int
> +cp_trait_lookup::hash (const char *str, size_t len)
> +{
> +  static const unsigned char asso_values[] =
> +    {
> +      86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
> +      86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
> +      86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
> +      86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
> +      86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
> +      86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
> +      86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
> +      86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
> +      86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
> +      86, 86, 86, 86, 86, 86, 86,  1, 86, 86,
> +       0, 35, 86,  0, 86,  0, 86, 86, 10, 10,
> +      50, 15, 55, 86, 30,  5, 15,  0, 86, 86,
> +      86, 20, 86, 86, 86, 86, 86, 86, 86, 86,
> +      86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
> +      86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
> +      86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
> +      86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
> +      86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
> +      86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
> +      86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
> +      86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
> +      86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
> +      86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
> +      86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
> +      86, 86, 86, 86, 86, 86, 86, 86, 86, 86,
> +      86, 86, 86, 86, 86, 86
> +    };
> +  unsigned int hval = len;
> +
> +  switch (hval)
> +    {
> +      default:
> +        hval += asso_values[static_cast<unsigned char>(str[7])];
> +      /*FALLTHROUGH*/
> +      case 7:
> +        break;
> +    }
> +  return hval;
> +}
> +
> +const struct cp_trait *
> +cp_trait_lookup::find (const char *str, size_t len)
> +{
> +  enum
> +    {
> +      TOTAL_KEYWORDS = 45,
> +      MIN_WORD_LENGTH = 7,
> +      MAX_WORD_LENGTH = 37,
> +      MIN_HASH_VALUE = 7,
> +      MAX_HASH_VALUE = 85
> +    };
> +
> +  static const struct cp_trait wordlist[] =
> +    {
> +#line 73 "../../gcc/cp/cp-trait.gperf"
> +      {"__bases", CPTK_BASES, 1, true},
> +#line 56 "../../gcc/cp/cp-trait.gperf"
> +      {"__is_pod", CPTK_IS_POD, 1, false},
> +#line 48 "../../gcc/cp/cp-trait.gperf"
> +      {"__is_enum", CPTK_IS_ENUM, 1, false},
> +#line 64 "../../gcc/cp/cp-trait.gperf"
> +      {"__is_union", CPTK_IS_UNION, 1, false},
> +#line 44 "../../gcc/cp/cp-trait.gperf"
> +      {"__is_class", CPTK_IS_CLASS, 1, false},
> +#line 60 "../../gcc/cp/cp-trait.gperf"
> +      {"__is_trivial", CPTK_IS_TRIVIAL, 1, false},
> +#line 41 "../../gcc/cp/cp-trait.gperf"
> +      {"__is_aggregate", CPTK_IS_AGGREGATE, 1, false},
> +#line 72 "../../gcc/cp/cp-trait.gperf"
> +      {"__is_deducible ", CPTK_IS_DEDUCIBLE, 2, false},
> +#line 43 "../../gcc/cp/cp-trait.gperf"
> +      {"__is_base_of", CPTK_IS_BASE_OF, 2, false},
> +#line 40 "../../gcc/cp/cp-trait.gperf"
> +      {"__is_abstract", CPTK_IS_ABSTRACT, 1, false},
> +#line 58 "../../gcc/cp/cp-trait.gperf"
> +      {"__is_same", CPTK_IS_SAME, 2, false},
> +#line 42 "../../gcc/cp/cp-trait.gperf"
> +      {"__is_assignable", CPTK_IS_ASSIGNABLE, 2, false},
> +#line 59 "../../gcc/cp/cp-trait.gperf"
> +      {"__is_standard_layout", CPTK_IS_STD_LAYOUT, 1, false},
> +#line 30 "../../gcc/cp/cp-trait.gperf"
> +      {"__is_same_as", CPTK_IS_SAME, 2, false},
> +#line 63 "../../gcc/cp/cp-trait.gperf"
> +      {"__is_trivially_copyable", CPTK_IS_TRIVIALLY_COPYABLE, 1, false},
> +#line 39 "../../gcc/cp/cp-trait.gperf"
> +      {"__has_virtual_destructor", CPTK_HAS_VIRTUAL_DESTRUCTOR, 1, false},
> +#line 61 "../../gcc/cp/cp-trait.gperf"
> +      {"__is_trivially_assignable", CPTK_IS_TRIVIALLY_ASSIGNABLE, 2, false},
> +#line 57 "../../gcc/cp/cp-trait.gperf"
> +      {"__is_polymorphic", CPTK_IS_POLYMORPHIC, 1, false},
> +#line 71 "../../gcc/cp/cp-trait.gperf"
> +      {"__underlying_type", CPTK_UNDERLYING_TYPE, 1, true},
> +#line 62 "../../gcc/cp/cp-trait.gperf"
> +      {"__is_trivially_constructible", CPTK_IS_TRIVIALLY_CONSTRUCTIBLE, -1, false},
> +#line 74 "../../gcc/cp/cp-trait.gperf"
> +      {"__direct_bases", CPTK_DIRECT_BASES, 1, true},
> +#line 51 "../../gcc/cp/cp-trait.gperf"
> +      {"__is_literal_type", CPTK_IS_LITERAL_TYPE, 1, false},
> +#line 33 "../../gcc/cp/cp-trait.gperf"
> +      {"__has_nothrow_copy", CPTK_HAS_NOTHROW_COPY, 1, false},
> +#line 31 "../../gcc/cp/cp-trait.gperf"
> +      {"__has_nothrow_assign", CPTK_HAS_NOTHROW_ASSIGN, 1, false},
> +#line 55 "../../gcc/cp/cp-trait.gperf"
> +      {"__is_pointer_interconvertible_base_of", CPTK_IS_POINTER_INTERCONVERTIBLE_BASE_OF, 2, false},
> +#line 52 "../../gcc/cp/cp-trait.gperf"
> +      {"__is_nothrow_assignable", CPTK_IS_NOTHROW_ASSIGNABLE, 2, false},
> +#line 54 "../../gcc/cp/cp-trait.gperf"
> +      {"__is_nothrow_convertible", CPTK_IS_NOTHROW_CONVERTIBLE, 2, false},
> +#line 32 "../../gcc/cp/cp-trait.gperf"
> +      {"__has_nothrow_constructor", CPTK_HAS_NOTHROW_CONSTRUCTOR, 1, false},
> +#line 53 "../../gcc/cp/cp-trait.gperf"
> +      {"__is_nothrow_constructible", CPTK_IS_NOTHROW_CONSTRUCTIBLE, -1, false},
> +#line 50 "../../gcc/cp/cp-trait.gperf"
> +      {"__is_layout_compatible", CPTK_IS_LAYOUT_COMPATIBLE, 2, false},
> +#line 67 "../../gcc/cp/cp-trait.gperf"
> +      {"__remove_cv", CPTK_REMOVE_CV, 1, true},
> +#line 36 "../../gcc/cp/cp-trait.gperf"
> +      {"__has_trivial_copy", CPTK_HAS_TRIVIAL_COPY, 1, false},
> +#line 68 "../../gcc/cp/cp-trait.gperf"
> +      {"__remove_cvref", CPTK_REMOVE_CVREF, 1, true},
> +#line 34 "../../gcc/cp/cp-trait.gperf"
> +      {"__has_trivial_assign", CPTK_HAS_TRIVIAL_ASSIGN, 1, false},
> +#line 69 "../../gcc/cp/cp-trait.gperf"
> +      {"__remove_reference", CPTK_REMOVE_REFERENCE, 1, true},
> +#line 37 "../../gcc/cp/cp-trait.gperf"
> +      {"__has_trivial_destructor", CPTK_HAS_TRIVIAL_DESTRUCTOR, 1, false},
> +#line 35 "../../gcc/cp/cp-trait.gperf"
> +      {"__has_trivial_constructor", CPTK_HAS_TRIVIAL_CONSTRUCTOR, 1, false},
> +#line 49 "../../gcc/cp/cp-trait.gperf"
> +      {"__is_final", CPTK_IS_FINAL, 1, false},
> +#line 47 "../../gcc/cp/cp-trait.gperf"
> +      {"__is_empty", CPTK_IS_EMPTY, 1, false},
> +#line 46 "../../gcc/cp/cp-trait.gperf"
> +      {"__is_convertible", CPTK_IS_CONVERTIBLE, 2, false},
> +#line 45 "../../gcc/cp/cp-trait.gperf"
> +      {"__is_constructible", CPTK_IS_CONSTRUCTIBLE, -1, false},
> +#line 66 "../../gcc/cp/cp-trait.gperf"
> +      {"__reference_converts_from_temporary", CPTK_REF_CONVERTS_FROM_TEMPORARY, 2, false},
> +#line 65 "../../gcc/cp/cp-trait.gperf"
> +      {"__reference_constructs_from_temporary", CPTK_REF_CONSTRUCTS_FROM_TEMPORARY, 2, false},
> +#line 70 "../../gcc/cp/cp-trait.gperf"
> +      {"__type_pack_element", CPTK_TYPE_PACK_ELEMENT, -1, true},
> +#line 38 "../../gcc/cp/cp-trait.gperf"
> +      {"__has_unique_object_representations", CPTK_HAS_UNIQUE_OBJ_REPRESENTATIONS, 1, false}
> +    };
> +
> +  static const signed char lookup[] =
> +    {
> +      -1, -1, -1, -1, -1, -1, -1,  0,  1,  2,  3,  4,  5, -1,
> +       6,  7, -1,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
> +      19, 20, -1, -1, 21, 22, -1, 23, -1, 24, 25, 26, 27, 28,
> +      29, -1, -1, -1, 30, -1, 31, 32, 33, -1, -1, 34, 35, 36,
> +      -1, -1, -1, -1, 37, -1, -1, -1, -1, 38, 39, -1, 40, -1,
> +      41, -1, 42, -1, 43, -1, -1, -1, -1, -1, -1, -1, -1, -1,
> +      -1, 44
> +    };
> +
> +  if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
> +    {
> +      unsigned int key = hash (str, len);
> +
> +      if (key <= MAX_HASH_VALUE)
> +        {
> +          int index = lookup[key];
> +
> +          if (index >= 0)
> +            {
> +              const char *s = wordlist[index].name;
> +
> +              if (*str == *s && !strcmp (str + 1, s + 1))
> +                return &wordlist[index];
> +            }
> +        }
> +    }
> +  return 0;
> +}
> diff --git a/gcc/cp/lex.cc b/gcc/cp/lex.cc
> index 64bcfb18196..9eeb29adde5 100644
> --- a/gcc/cp/lex.cc
> +++ b/gcc/cp/lex.cc
> @@ -260,6 +260,11 @@ init_reswords (void)
>  	set_identifier_kind (id, cik_keyword);
>      }
>  
> +  /* RID_TRAIT_EXPR and RID_TRAIT_TYPE do not have
> +     corresponding unique canonical spellings.  */
> +  ridpointers [(int) RID_TRAIT_EXPR] = nullptr;
> +  ridpointers [(int) RID_TRAIT_TYPE] = nullptr;

Thanks!  This gets the job done, but perhaps it suggests that treating
these identifiers as keywords, and having them share the same rid code,
isn't quite the best approach... really we'd want these identifiers to
be classified as "conditional" keywords that are only treated as actual
keywords whenever they're followed by a '(' (since the only thing you
can do with a built-in trait is to call it) and are otherwise treated as
ordinary identifiers in other contexts.  This way existing uses of these
names in e.g. libstdc++ will continue to be accepted, and won't need to
be renamed.  And we might as well implement this as part of this patch,
since it'd replace the RID_TRAIT_EXPR / RID_TRAIT_TYPE approach.

So I think we should:

  * get rid of RID_TRAIT_EXPR / RID_TRAIT_TYPE
  * add a new 'cik_trait' kind to cp_identifier_kind.  Actually
    let's replace the unused cik_reserved_for_udlit with cik_trait,
    since we currently can't handle more than 7 kinds (we use 3 bits
    to encode cp_identifier_kind within the flags of an IDENTIFIER node)
  * set each built-in trait's identifier kind to cik_trait rather than
    to cik_keyword (in init_reswords or around there)
  * within the parser, replace existing RID_TRAIT_EXPR and RID_TRAIT_TYPE
    checks to instead check for a CPP_NAME token having a cik_trait identifier
    (for an expression- or type-yielding trait as appropriate)
  * In a follow-up patch, we can then refine these checks to additionally
    require that the subsequent token in the token stream is '(' (or '<'
    for the special __type_pack_element built-in trait)

This last step will allow us to accept code like 'int __remove_cv = 42;" :D

> +
>    for (i = 0; i < NUM_INT_N_ENTS; i++)
>      {
>        char name[50];
> diff --git a/gcc/cp/parser.cc b/gcc/cp/parser.cc
> index f3abae716fe..432c43400ab 100644
> --- a/gcc/cp/parser.cc
> +++ b/gcc/cp/parser.cc
> @@ -49,6 +49,7 @@ along with GCC; see the file COPYING3.  If not see
>  #include "contracts.h"
>  #include "bitmap.h"
>  #include "builtins.h"
> +#include "cp-trait.h"
>  
>  \f
>  /* The lexer.  */
> @@ -1165,12 +1166,8 @@ cp_keyword_starts_decl_specifier_p (enum rid keyword)
>        /* C++20 extensions.  */
>      case RID_CONSTINIT:
>      case RID_CONSTEVAL:
> -      return true;
> -
> -#define DEFTRAIT_TYPE(CODE, NAME, ARITY) \
> -    case RID_##CODE:
> -#include "cp-trait.def"
> -#undef DEFTRAIT_TYPE
> +      /* C++ type-yielding built-in traits, defined in cp-trait.def.  */
> +    case RID_TRAIT_TYPE:
>        return true;
>  
>      default:
> @@ -2854,7 +2851,7 @@ static void cp_parser_late_parsing_default_args
>  static tree cp_parser_sizeof_operand
>    (cp_parser *, enum rid);
>  static cp_expr cp_parser_trait
> -  (cp_parser *, enum rid);
> +  (cp_parser *, tree);
>  static bool cp_parser_declares_only_class_p
>    (cp_parser *);
>  static void cp_parser_set_storage_class
> @@ -6021,11 +6018,8 @@ cp_parser_primary_expression (cp_parser *parser,
>  	case RID_OFFSETOF:
>  	  return cp_parser_builtin_offsetof (parser);
>  
> -#define DEFTRAIT_EXPR(CODE, NAME, ARITY) \
> -	case RID_##CODE:
> -#include "cp-trait.def"
> -#undef DEFTRAIT_EXPR
> -	  return cp_parser_trait (parser, token->keyword);
> +	case RID_TRAIT_EXPR:
> +	  return cp_parser_trait (parser, token->u.value);
>  
>  	// C++ concepts
>  	case RID_REQUIRES:
> @@ -11033,28 +11027,15 @@ cp_parser_builtin_offsetof (cp_parser *parser)
>  /* Parse a builtin trait expression or type.  */
>  
>  static cp_expr
> -cp_parser_trait (cp_parser* parser, enum rid keyword)
> +cp_parser_trait (cp_parser* parser, tree keyword)
>  {
> -  cp_trait_kind kind;
> -  tree type1, type2 = NULL_TREE;
> -  bool binary = false;
> -  bool variadic = false;
> -  bool type = false;
> +  const char* keyword_str = IDENTIFIER_POINTER (keyword);
> +  int keyword_len = IDENTIFIER_LENGTH (keyword);
> +  const cp_trait* trait = cp_trait_lookup::find (keyword_str, keyword_len);
>  
> -  switch (keyword)
> -    {
> -#define DEFTRAIT(TCC, CODE, NAME, ARITY) \
> -    case RID_##CODE:			 \
> -      kind = CPTK_##CODE;		 \
> -      binary = (ARITY == 2);		 \
> -      variadic = (ARITY == -1);		 \
> -      type = (TCC == tcc_type);		 \
> -      break;
> -#include "cp-trait.def"
> -#undef DEFTRAIT
> -    default:
> -      gcc_unreachable ();
> -    }
> +  tree type1, type2 = NULL_TREE;
> +  bool binary = (trait->arity == 2);
> +  bool variadic = (trait->arity == -1);
>  
>    /* Get location of initial token.  */
>    location_t start_loc = cp_lexer_peek_token (parser->lexer)->location;
> @@ -11063,12 +11044,12 @@ cp_parser_trait (cp_parser* parser, enum rid keyword)
>    cp_lexer_consume_token (parser->lexer);
>  
>    matching_parens parens;
> -  if (kind == CPTK_TYPE_PACK_ELEMENT)
> +  if (trait->kind == CPTK_TYPE_PACK_ELEMENT)
>      cp_parser_require (parser, CPP_LESS, RT_LESS);
>    else
>      parens.require_open (parser);
>  
> -  if (kind == CPTK_IS_DEDUCIBLE)
> +  if (trait->kind == CPTK_IS_DEDUCIBLE)
>      {
>        const cp_token* token = cp_lexer_peek_token (parser->lexer);
>        type1 = cp_parser_id_expression (parser,
> @@ -11079,7 +11060,7 @@ cp_parser_trait (cp_parser* parser, enum rid keyword)
>  				       /*optional_p=*/false);
>        type1 = cp_parser_lookup_name_simple (parser, type1, token->location);
>      }
> -  else if (kind == CPTK_TYPE_PACK_ELEMENT)
> +  else if (trait->kind == CPTK_TYPE_PACK_ELEMENT)
>      /* __type_pack_element takes an expression as its first argument and uses
>         template-id syntax instead of function call syntax (for consistency
>         with Clang).  We special case these properties of __type_pack_element
> @@ -11094,7 +11075,7 @@ cp_parser_trait (cp_parser* parser, enum rid keyword)
>    if (type1 == error_mark_node)
>      return error_mark_node;
>  
> -  if (kind == CPTK_TYPE_PACK_ELEMENT)
> +  if (trait->kind == CPTK_TYPE_PACK_ELEMENT)
>      {
>        cp_parser_require (parser, CPP_COMMA, RT_COMMA);
>        tree trailing = cp_parser_enclosed_template_argument_list (parser);
> @@ -11144,7 +11125,7 @@ cp_parser_trait (cp_parser* parser, enum rid keyword)
>      }
>  
>    location_t finish_loc = cp_lexer_peek_token (parser->lexer)->location;
> -  if (kind == CPTK_TYPE_PACK_ELEMENT)
> +  if (trait->kind == CPTK_TYPE_PACK_ELEMENT)
>      /* cp_parser_enclosed_template_argument_list above already took care
>         of parsing the closing '>'.  */;
>    else
> @@ -11158,17 +11139,17 @@ cp_parser_trait (cp_parser* parser, enum rid keyword)
>  
>    /* Complete the trait expression, which may mean either processing
>       the trait expr now or saving it for template instantiation.  */
> -  switch (kind)
> +  switch (trait->kind)
>      {
>      case CPTK_BASES:
>        return cp_expr (finish_bases (type1, false), trait_loc);
>      case CPTK_DIRECT_BASES:
>        return cp_expr (finish_bases (type1, true), trait_loc);
>      default:
> -      if (type)
> -	return finish_trait_type (kind, type1, type2, tf_warning_or_error);
> +      if (trait->type)
> +	return finish_trait_type (trait->kind, type1, type2, tf_warning_or_error);
>        else
> -	return finish_trait_expr (trait_loc, kind, type1, type2);
> +	return finish_trait_expr (trait_loc, trait->kind, type1, type2);
>      }
>  }
>  
> @@ -20081,11 +20062,8 @@ cp_parser_simple_type_specifier (cp_parser* parser,
>  
>        return type;
>  
> -#define DEFTRAIT_TYPE(CODE, NAME, ARITY) \
> -    case RID_##CODE:
> -#include "cp-trait.def"
> -#undef DEFTRAIT_TYPE
> -      type = cp_parser_trait (parser, token->keyword);
> +    case RID_TRAIT_TYPE:
> +      type = cp_parser_trait (parser, token->u.value);
>        if (decl_specs)
>  	cp_parser_set_decl_spec_type (decl_specs, type,
>  				      token,
> -- 
> 2.42.0
> 
> 


  reply	other threads:[~2023-10-12 17:03 UTC|newest]

Thread overview: 623+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-09-14  6:42 [PATCH v11 00/40] Optimize type traits performance Ken Matsui
2023-09-14  6:42 ` [PATCH v11 01/40] c++: Sort built-in identifiers alphabetically Ken Matsui
2023-09-14  6:42 ` [PATCH v11 02/40] c++: Implement __is_const built-in trait Ken Matsui
2023-09-14  6:42 ` [PATCH v11 03/40] libstdc++: Optimize is_const trait performance Ken Matsui
2023-09-14  6:42 ` [PATCH v11 04/40] c++: Implement __is_volatile built-in trait Ken Matsui
2023-09-14  6:42 ` [PATCH v11 05/40] libstdc++: Optimize is_volatile trait performance Ken Matsui
2023-09-14  6:42 ` [PATCH v11 06/40] c++: Implement __is_array built-in trait Ken Matsui
2023-09-14  6:42 ` [PATCH v11 07/40] libstdc++: Optimize is_array trait performance Ken Matsui
2023-09-14  6:42 ` [PATCH v11 08/40] c++: Implement __is_unbounded_array built-in trait Ken Matsui
2023-09-14  6:42 ` [PATCH v11 09/40] libstdc++: Optimize is_unbounded_array trait performance Ken Matsui
2023-09-14  6:42 ` [PATCH v11 10/40] c++: Implement __is_bounded_array built-in trait Ken Matsui
2023-09-14  6:42 ` [PATCH v11 11/40] libstdc++: Optimize is_bounded_array trait performance Ken Matsui
2023-09-14  6:42 ` [PATCH v11 12/40] c++: Implement __is_scoped_enum built-in trait Ken Matsui
2023-09-14  6:42 ` [PATCH v11 13/40] libstdc++: Optimize is_scoped_enum trait performance Ken Matsui
2023-09-14  6:42 ` [PATCH v11 14/40] c++: Implement __is_member_pointer built-in trait Ken Matsui
2023-09-14  6:42 ` [PATCH v11 15/40] libstdc++: Optimize is_member_pointer trait performance Ken Matsui
2023-09-14  6:42 ` [PATCH v11 16/40] c, c++: Use 16 bits for all use of enum rid for more keyword space Ken Matsui
2023-09-14 17:53   ` Joseph Myers
2023-09-14 21:44     ` Ken Matsui
2023-09-15 23:26     ` Ken Matsui
2023-09-14  6:42 ` [PATCH v11 17/40] c-family: Fix C_SET_RID_CODE to handle 16-bit rid code correctly Ken Matsui
2023-09-14  6:42 ` [PATCH v11 18/40] c++: Implement __is_member_function_pointer built-in trait Ken Matsui
2023-09-14  6:42 ` [PATCH v11 19/40] libstdc++: Optimize is_member_function_pointer trait performance Ken Matsui
2023-09-14  6:42 ` [PATCH v11 20/40] c++: Implement __is_member_object_pointer built-in trait Ken Matsui
2023-09-14  6:43 ` [PATCH v11 21/40] libstdc++: Optimize is_member_object_pointer trait performance Ken Matsui
2023-09-14  6:43 ` [PATCH v11 22/40] c++: Implement __is_reference built-in trait Ken Matsui
2023-09-14  6:43 ` [PATCH v11 23/40] libstdc++: Optimize is_reference trait performance Ken Matsui
2023-09-14  6:43 ` [PATCH v11 24/40] c++: Implement __is_function built-in trait Ken Matsui
2023-09-14  6:43 ` [PATCH v11 25/40] libstdc++: Optimize is_function trait performance Ken Matsui
2023-09-14  6:43 ` [PATCH v11 26/40] libstdc++: Optimize is_object " Ken Matsui
2023-09-14  6:43 ` [PATCH v11 27/40] c++: Implement __remove_pointer built-in trait Ken Matsui
2023-09-14  6:43 ` [PATCH v11 28/40] libstdc++: Optimize remove_pointer trait performance Ken Matsui
2023-09-14  6:43 ` [PATCH v11 29/40] c++, libstdc++: Implement __is_pointer built-in trait Ken Matsui
2023-09-14  6:43 ` [PATCH v11 30/40] libstdc++: Optimize is_pointer trait performance Ken Matsui
2023-09-14  6:43 ` [PATCH v11 31/40] c++, libstdc++: Implement __is_arithmetic built-in trait Ken Matsui
2023-09-14  6:43 ` [PATCH v11 32/40] libstdc++: Optimize is_arithmetic trait performance Ken Matsui
2023-09-14  6:43 ` [PATCH v11 33/40] libstdc++: Optimize is_fundamental " Ken Matsui
2023-09-14  6:43 ` [PATCH v11 34/40] libstdc++: Optimize is_compound " Ken Matsui
2023-09-14  6:43 ` [PATCH v11 35/40] c++: Implement __is_unsigned built-in trait Ken Matsui
2023-09-14  6:43 ` [PATCH v11 36/40] libstdc++: Optimize is_unsigned trait performance Ken Matsui
2023-09-14  6:43 ` [PATCH v11 37/40] c++, libstdc++: Implement __is_signed built-in trait Ken Matsui
2023-09-14  6:43 ` [PATCH v11 38/40] libstdc++: Optimize is_signed trait performance Ken Matsui
2023-09-14  6:43 ` [PATCH v11 39/40] c++, libstdc++: Implement __is_scalar built-in trait Ken Matsui
2023-09-14  6:43 ` [PATCH v11 40/40] libstdc++: Optimize is_scalar trait performance Ken Matsui
2023-09-15  2:21 ` [PATCH v12 00/40] Optimize type traits performance Ken Matsui
2023-09-15  2:21   ` [PATCH v12 01/40] c++: Sort built-in identifiers alphabetically Ken Matsui
2023-09-15  2:21   ` [PATCH v12 02/40] c++: Implement __is_const built-in trait Ken Matsui
2023-09-15  2:21   ` [PATCH v12 03/40] libstdc++: Optimize is_const trait performance Ken Matsui
2023-09-15  2:21   ` [PATCH v12 04/40] c++: Implement __is_volatile built-in trait Ken Matsui
2023-09-15  2:21   ` [PATCH v12 05/40] libstdc++: Optimize is_volatile trait performance Ken Matsui
2023-09-15  2:21   ` [PATCH v12 06/40] c++: Implement __is_array built-in trait Ken Matsui
2023-09-15  2:21   ` [PATCH v12 07/40] libstdc++: Optimize is_array trait performance Ken Matsui
2023-09-15  2:21   ` [PATCH v12 08/40] c++: Implement __is_unbounded_array built-in trait Ken Matsui
2023-09-15  2:21   ` [PATCH v12 09/40] libstdc++: Optimize is_unbounded_array trait performance Ken Matsui
2023-09-15  2:21   ` [PATCH v12 10/40] c++: Implement __is_bounded_array built-in trait Ken Matsui
2023-09-15  2:21   ` [PATCH v12 11/40] libstdc++: Optimize is_bounded_array trait performance Ken Matsui
2023-09-15  2:21   ` [PATCH v12 12/40] c++: Implement __is_scoped_enum built-in trait Ken Matsui
2023-09-15  2:21   ` [PATCH v12 13/40] libstdc++: Optimize is_scoped_enum trait performance Ken Matsui
2023-09-15  2:21   ` [PATCH v12 14/40] c++: Implement __is_member_pointer built-in trait Ken Matsui
2023-09-15  2:21   ` [PATCH v12 15/40] libstdc++: Optimize is_member_pointer trait performance Ken Matsui
2023-09-15  2:21   ` [PATCH v12 16/40] c, c++: Use 16 bits for all use of enum rid for more keyword space Ken Matsui
2023-09-15  2:21   ` [PATCH v12 17/40] c-family: Fix C_SET_RID_CODE to handle 16-bit rid code correctly Ken Matsui
2023-09-15  2:21   ` [PATCH v12 18/40] c++: Implement __is_member_function_pointer built-in trait Ken Matsui
2023-09-15  2:21   ` [PATCH v12 19/40] libstdc++: Optimize is_member_function_pointer trait performance Ken Matsui
2023-09-15  2:21   ` [PATCH v12 20/40] c++: Implement __is_member_object_pointer built-in trait Ken Matsui
2023-09-15  2:21   ` [PATCH v12 21/40] libstdc++: Optimize is_member_object_pointer trait performance Ken Matsui
2023-09-15  2:21   ` [PATCH v12 22/40] c++: Implement __is_reference built-in trait Ken Matsui
2023-09-15  2:21   ` [PATCH v12 23/40] libstdc++: Optimize is_reference trait performance Ken Matsui
2023-09-15  2:21   ` [PATCH v12 24/40] c++: Implement __is_function built-in trait Ken Matsui
2023-09-15  2:21   ` [PATCH v12 25/40] libstdc++: Optimize is_function trait performance Ken Matsui
2023-09-15  2:21   ` [PATCH v12 26/40] libstdc++: Optimize is_object " Ken Matsui
2023-09-15  2:21   ` [PATCH v12 27/40] c++: Implement __remove_pointer built-in trait Ken Matsui
2023-09-15  2:21   ` [PATCH v12 28/40] libstdc++: Optimize remove_pointer trait performance Ken Matsui
2023-09-15  2:21   ` [PATCH v12 29/40] c++, libstdc++: Implement __is_pointer built-in trait Ken Matsui
2023-09-15  2:21   ` [PATCH v12 30/40] libstdc++: Optimize is_pointer trait performance Ken Matsui
2023-09-15  2:21   ` [PATCH v12 31/40] c++, libstdc++: Implement __is_arithmetic built-in trait Ken Matsui
2023-09-15  2:21   ` [PATCH v12 32/40] libstdc++: Optimize is_arithmetic trait performance Ken Matsui
2023-09-15  2:21   ` [PATCH v12 33/40] libstdc++: Optimize is_fundamental " Ken Matsui
2023-09-15  2:21   ` [PATCH v12 34/40] libstdc++: Optimize is_compound " Ken Matsui
2023-09-15  2:21   ` [PATCH v12 35/40] c++: Implement __is_unsigned built-in trait Ken Matsui
2023-09-15  2:21   ` [PATCH v12 36/40] libstdc++: Optimize is_unsigned trait performance Ken Matsui
2023-09-15  2:21   ` [PATCH v12 37/40] c++, libstdc++: Implement __is_signed built-in trait Ken Matsui
2023-09-15  2:21   ` [PATCH v12 38/40] libstdc++: Optimize is_signed trait performance Ken Matsui
2023-09-15  2:21   ` [PATCH v12 39/40] c++, libstdc++: Implement __is_scalar built-in trait Ken Matsui
2023-09-15  2:21   ` [PATCH v12 40/40] libstdc++: Optimize is_scalar trait performance Ken Matsui
2023-09-15  2:34   ` [PATCH v13 00/40] Optimize type traits performance Ken Matsui
2023-09-15  2:34     ` [PATCH v13 01/40] c++: Sort built-in identifiers alphabetically Ken Matsui
2023-09-15  2:34     ` [PATCH v13 02/40] c++: Implement __is_const built-in trait Ken Matsui
2023-09-15  2:34     ` [PATCH v13 03/40] libstdc++: Optimize is_const trait performance Ken Matsui
2023-09-15  2:34     ` [PATCH v13 04/40] c++: Implement __is_volatile built-in trait Ken Matsui
2023-09-15  2:34     ` [PATCH v13 05/40] libstdc++: Optimize is_volatile trait performance Ken Matsui
2023-09-15  2:34     ` [PATCH v13 06/40] c++: Implement __is_array built-in trait Ken Matsui
2023-09-15  2:34     ` [PATCH v13 07/40] libstdc++: Optimize is_array trait performance Ken Matsui
2023-09-15  2:34     ` [PATCH v13 08/40] c++: Implement __is_unbounded_array built-in trait Ken Matsui
2023-09-15  2:34     ` [PATCH v13 09/40] libstdc++: Optimize is_unbounded_array trait performance Ken Matsui
2023-09-15  2:34     ` [PATCH v13 10/40] c++: Implement __is_bounded_array built-in trait Ken Matsui
2023-09-15  2:34     ` [PATCH v13 11/40] libstdc++: Optimize is_bounded_array trait performance Ken Matsui
2023-09-15  2:34     ` [PATCH v13 12/40] c++: Implement __is_scoped_enum built-in trait Ken Matsui
2023-09-15  2:34     ` [PATCH v13 13/40] libstdc++: Optimize is_scoped_enum trait performance Ken Matsui
2023-09-15  2:34     ` [PATCH v13 14/40] c++: Implement __is_member_pointer built-in trait Ken Matsui
2023-09-15  2:34     ` [PATCH v13 15/40] libstdc++: Optimize is_member_pointer trait performance Ken Matsui
2023-09-15  2:34     ` [PATCH v13 16/40] c, c++: Use 16 bits for all use of enum rid for more keyword space Ken Matsui
2023-09-15 23:50       ` [PATCH v14 00/40] Optimize type traits performance Ken Matsui
2023-09-15 23:50         ` [PATCH v14 01/40] c++: Sort built-in identifiers alphabetically Ken Matsui
2023-09-15 23:50         ` [PATCH v14 02/40] c++: Implement __is_const built-in trait Ken Matsui
2023-09-15 23:50         ` [PATCH v14 03/40] libstdc++: Optimize is_const trait performance Ken Matsui
2023-09-15 23:50         ` [PATCH v14 04/40] c++: Implement __is_volatile built-in trait Ken Matsui
2023-09-15 23:50         ` [PATCH v14 05/40] libstdc++: Optimize is_volatile trait performance Ken Matsui
2023-09-15 23:50         ` [PATCH v14 06/40] c++: Implement __is_array built-in trait Ken Matsui
2023-09-15 23:50         ` [PATCH v14 07/40] libstdc++: Optimize is_array trait performance Ken Matsui
2023-09-15 23:50         ` [PATCH v14 08/40] c++: Implement __is_unbounded_array built-in trait Ken Matsui
2023-09-15 23:50         ` [PATCH v14 09/40] libstdc++: Optimize is_unbounded_array trait performance Ken Matsui
2023-09-15 23:50         ` [PATCH v14 10/40] c++: Implement __is_bounded_array built-in trait Ken Matsui
2023-09-15 23:50         ` [PATCH v14 11/40] libstdc++: Optimize is_bounded_array trait performance Ken Matsui
2023-09-15 23:50         ` [PATCH v14 12/40] c++: Implement __is_scoped_enum built-in trait Ken Matsui
2023-09-15 23:50         ` [PATCH v14 13/40] libstdc++: Optimize is_scoped_enum trait performance Ken Matsui
2023-09-15 23:51         ` [PATCH v14 14/40] c++: Implement __is_member_pointer built-in trait Ken Matsui
2023-09-15 23:51         ` [PATCH v14 15/40] libstdc++: Optimize is_member_pointer trait performance Ken Matsui
2023-09-15 23:51         ` [PATCH v14 16/40] c, c++: Use 16 bits for all use of enum rid for more keyword space Ken Matsui
2023-09-19 16:58           ` Jason Merrill
2023-09-19 23:05             ` Ken Matsui
2023-09-27 13:57               ` Jason Merrill
2023-10-09  5:03                 ` Ken Matsui
2023-09-15 23:51         ` [PATCH v14 17/40] c-family: Fix C_SET_RID_CODE to handle 16-bit rid code correctly Ken Matsui
2023-09-15 23:51         ` [PATCH v14 18/40] c++: Implement __is_member_function_pointer built-in trait Ken Matsui
2023-09-15 23:51         ` [PATCH v14 19/40] libstdc++: Optimize is_member_function_pointer trait performance Ken Matsui
2023-09-15 23:51         ` [PATCH v14 20/40] c++: Implement __is_member_object_pointer built-in trait Ken Matsui
2023-09-15 23:51         ` [PATCH v14 21/40] libstdc++: Optimize is_member_object_pointer trait performance Ken Matsui
2023-09-15 23:51         ` [PATCH v14 22/40] c++: Implement __is_reference built-in trait Ken Matsui
2023-09-15 23:51         ` [PATCH v14 23/40] libstdc++: Optimize is_reference trait performance Ken Matsui
2023-09-15 23:51         ` [PATCH v14 24/40] c++: Implement __is_function built-in trait Ken Matsui
2023-09-15 23:51         ` [PATCH v14 25/40] libstdc++: Optimize is_function trait performance Ken Matsui
2023-09-15 23:51         ` [PATCH v14 26/40] libstdc++: Optimize is_object " Ken Matsui
2023-09-15 23:51         ` [PATCH v14 27/40] c++: Implement __remove_pointer built-in trait Ken Matsui
2023-09-15 23:51         ` [PATCH v14 28/40] libstdc++: Optimize remove_pointer trait performance Ken Matsui
2023-09-15 23:51         ` [PATCH v14 29/40] c++, libstdc++: Implement __is_pointer built-in trait Ken Matsui
2023-09-15 23:51         ` [PATCH v14 30/40] libstdc++: Optimize is_pointer trait performance Ken Matsui
2023-09-15 23:51         ` [PATCH v14 31/40] c++, libstdc++: Implement __is_arithmetic built-in trait Ken Matsui
2023-09-15 23:51         ` [PATCH v14 32/40] libstdc++: Optimize is_arithmetic trait performance Ken Matsui
2023-09-15 23:51         ` [PATCH v14 33/40] libstdc++: Optimize is_fundamental " Ken Matsui
2023-09-15 23:51         ` [PATCH v14 34/40] libstdc++: Optimize is_compound " Ken Matsui
2023-09-15 23:51         ` [PATCH v14 35/40] c++: Implement __is_unsigned built-in trait Ken Matsui
2023-09-15 23:51         ` [PATCH v14 36/40] libstdc++: Optimize is_unsigned trait performance Ken Matsui
2023-09-15 23:51         ` [PATCH v14 37/40] c++, libstdc++: Implement __is_signed built-in trait Ken Matsui
2023-09-15 23:51         ` [PATCH v14 38/40] libstdc++: Optimize is_signed trait performance Ken Matsui
2023-09-15 23:51         ` [PATCH v14 39/40] c++, libstdc++: Implement __is_scalar built-in trait Ken Matsui
2023-09-15 23:51         ` [PATCH v14 40/40] libstdc++: Optimize is_scalar trait performance Ken Matsui
2023-09-15  2:34     ` [PATCH v13 17/40] c-family: Fix C_SET_RID_CODE to handle 16-bit rid code correctly Ken Matsui
2023-09-15  2:34     ` [PATCH v13 18/40] c++: Implement __is_member_function_pointer built-in trait Ken Matsui
2023-09-15  2:34     ` [PATCH v13 19/40] libstdc++: Optimize is_member_function_pointer trait performance Ken Matsui
2023-09-15  2:35     ` [PATCH v13 20/40] c++: Implement __is_member_object_pointer built-in trait Ken Matsui
2023-09-15  2:35     ` [PATCH v13 21/40] libstdc++: Optimize is_member_object_pointer trait performance Ken Matsui
2023-09-15  2:35     ` [PATCH v13 22/40] c++: Implement __is_reference built-in trait Ken Matsui
2023-09-15  2:35     ` [PATCH v13 23/40] libstdc++: Optimize is_reference trait performance Ken Matsui
2023-09-15  2:35     ` [PATCH v13 24/40] c++: Implement __is_function built-in trait Ken Matsui
2023-09-15  2:35     ` [PATCH v13 25/40] libstdc++: Optimize is_function trait performance Ken Matsui
2023-09-15  2:35     ` [PATCH v13 26/40] libstdc++: Optimize is_object " Ken Matsui
2023-09-15  2:35     ` [PATCH v13 27/40] c++: Implement __remove_pointer built-in trait Ken Matsui
2023-09-15  2:35     ` [PATCH v13 28/40] libstdc++: Optimize remove_pointer trait performance Ken Matsui
2023-09-15  2:35     ` [PATCH v13 29/40] c++, libstdc++: Implement __is_pointer built-in trait Ken Matsui
2023-09-15  2:35     ` [PATCH v13 30/40] libstdc++: Optimize is_pointer trait performance Ken Matsui
2023-09-15  2:35     ` [PATCH v13 31/40] c++, libstdc++: Implement __is_arithmetic built-in trait Ken Matsui
2023-09-15  2:35     ` [PATCH v13 32/40] libstdc++: Optimize is_arithmetic trait performance Ken Matsui
2023-09-15  2:35     ` [PATCH v13 33/40] libstdc++: Optimize is_fundamental " Ken Matsui
2023-09-15  2:35     ` [PATCH v13 34/40] libstdc++: Optimize is_compound " Ken Matsui
2023-09-15  2:35     ` [PATCH v13 35/40] c++: Implement __is_unsigned built-in trait Ken Matsui
2023-09-15  2:35     ` [PATCH v13 36/40] libstdc++: Optimize is_unsigned trait performance Ken Matsui
2023-09-15  2:35     ` [PATCH v13 37/40] c++, libstdc++: Implement __is_signed built-in trait Ken Matsui
2023-09-15  2:35     ` [PATCH v13 38/40] libstdc++: Optimize is_signed trait performance Ken Matsui
2023-09-15  2:35     ` [PATCH v13 39/40] c++, libstdc++: Implement __is_scalar built-in trait Ken Matsui
2023-09-15  2:35     ` [PATCH v13 40/40] libstdc++: Optimize is_scalar trait performance Ken Matsui
2023-10-10  9:46     ` [PATCH v15 00/39] Optimize type traits performance Ken Matsui
2023-10-10  9:46       ` [PATCH v15 01/39] c++: Sort built-in identifiers alphabetically Ken Matsui
2023-10-10  9:46       ` [PATCH v15 02/39] c-family, c++: Look up traits through gperf instead of enum rid Ken Matsui
2023-10-10  9:46       ` [PATCH v15 03/39] c++: Implement __is_const built-in trait Ken Matsui
2023-10-10  9:46       ` [PATCH v15 04/39] libstdc++: Optimize is_const trait performance Ken Matsui
2023-10-10  9:46       ` [PATCH v15 05/39] c++: Implement __is_volatile built-in trait Ken Matsui
2023-10-10  9:46       ` [PATCH v15 06/39] libstdc++: Optimize is_volatile trait performance Ken Matsui
2023-10-10  9:46       ` [PATCH v15 07/39] c++: Implement __is_array built-in trait Ken Matsui
2023-10-10  9:46       ` [PATCH v15 08/39] libstdc++: Optimize is_array trait performance Ken Matsui
2023-10-10  9:46       ` [PATCH v15 09/39] c++: Implement __is_unbounded_array built-in trait Ken Matsui
2023-10-10  9:46       ` [PATCH v15 10/39] libstdc++: Optimize is_unbounded_array trait performance Ken Matsui
2023-10-10  9:46       ` [PATCH v15 11/39] c++: Implement __is_bounded_array built-in trait Ken Matsui
2023-10-10  9:46       ` [PATCH v15 12/39] libstdc++: Optimize is_bounded_array trait performance Ken Matsui
2023-10-10  9:46       ` [PATCH v15 13/39] c++: Implement __is_scoped_enum built-in trait Ken Matsui
2023-10-10  9:46       ` [PATCH v15 14/39] libstdc++: Optimize is_scoped_enum trait performance Ken Matsui
2023-10-10  9:46       ` [PATCH v15 15/39] c++: Implement __is_member_pointer built-in trait Ken Matsui
2023-10-10  9:46       ` [PATCH v15 16/39] libstdc++: Optimize is_member_pointer trait performance Ken Matsui
2023-10-10  9:46       ` [PATCH v15 17/39] c++: Implement __is_member_function_pointer built-in trait Ken Matsui
2023-10-10  9:46       ` [PATCH v15 18/39] libstdc++: Optimize is_member_function_pointer trait performance Ken Matsui
2023-10-10  9:46       ` [PATCH v15 19/39] c++: Implement __is_member_object_pointer built-in trait Ken Matsui
2023-10-10  9:46       ` [PATCH v15 20/39] libstdc++: Optimize is_member_object_pointer trait performance Ken Matsui
2023-10-10  9:46       ` [PATCH v15 21/39] c++: Implement __is_reference built-in trait Ken Matsui
2023-10-10  9:46       ` [PATCH v15 22/39] libstdc++: Optimize is_reference trait performance Ken Matsui
2023-10-10  9:46       ` [PATCH v15 23/39] c++: Implement __is_function built-in trait Ken Matsui
2023-10-10  9:46       ` [PATCH v15 24/39] libstdc++: Optimize is_function trait performance Ken Matsui
2023-10-10  9:46       ` [PATCH v15 25/39] libstdc++: Optimize is_object " Ken Matsui
2023-10-10  9:46       ` [PATCH v15 26/39] c++: Implement __remove_pointer built-in trait Ken Matsui
2023-10-10  9:46       ` [PATCH v15 27/39] libstdc++: Optimize remove_pointer trait performance Ken Matsui
2023-10-10  9:46       ` [PATCH v15 28/39] c++, libstdc++: Implement __is_pointer built-in trait Ken Matsui
2023-10-10  9:46       ` [PATCH v15 29/39] libstdc++: Optimize is_pointer trait performance Ken Matsui
2023-10-10  9:46       ` [PATCH v15 30/39] c++, libstdc++: Implement __is_arithmetic built-in trait Ken Matsui
2023-10-10  9:46       ` [PATCH v15 31/39] libstdc++: Optimize is_arithmetic trait performance Ken Matsui
2023-10-10  9:46       ` [PATCH v15 32/39] libstdc++: Optimize is_fundamental " Ken Matsui
2023-10-10  9:46       ` [PATCH v15 33/39] libstdc++: Optimize is_compound " Ken Matsui
2023-10-10  9:46       ` [PATCH v15 34/39] c++: Implement __is_unsigned built-in trait Ken Matsui
2023-10-10  9:46       ` [PATCH v15 35/39] libstdc++: Optimize is_unsigned trait performance Ken Matsui
2023-10-10  9:46       ` [PATCH v15 36/39] c++, libstdc++: Implement __is_signed built-in trait Ken Matsui
2023-10-10  9:46       ` [PATCH v15 37/39] libstdc++: Optimize is_signed trait performance Ken Matsui
2023-10-10  9:46       ` [PATCH v15 38/39] c++, libstdc++: Implement __is_scalar built-in trait Ken Matsui
2023-10-10  9:46       ` [PATCH v15 39/39] libstdc++: Optimize is_scalar trait performance Ken Matsui
2023-10-10 22:09       ` [PATCH v16 00/39] Optimize type traits performance Ken Matsui
2023-10-10 22:09         ` [PATCH v16 01/39] c++: Sort built-in identifiers alphabetically Ken Matsui
2023-10-10 22:09         ` [PATCH v16 02/39] c-family, c++: Look up built-in traits through gperf Ken Matsui
2023-10-11 20:09           ` Patrick Palka
2023-10-11 21:34             ` Ken Matsui
2023-10-10 22:09         ` [PATCH v16 03/39] c++: Implement __is_const built-in trait Ken Matsui
2023-10-10 22:09         ` [PATCH v16 04/39] libstdc++: Optimize is_const trait performance Ken Matsui
2023-10-10 22:09         ` [PATCH v16 05/39] c++: Implement __is_volatile built-in trait Ken Matsui
2023-10-10 22:09         ` [PATCH v16 06/39] libstdc++: Optimize is_volatile trait performance Ken Matsui
2023-10-10 22:09         ` [PATCH v16 07/39] c++: Implement __is_array built-in trait Ken Matsui
2023-10-10 22:09         ` [PATCH v16 08/39] libstdc++: Optimize is_array trait performance Ken Matsui
2023-10-10 22:10         ` [PATCH v16 09/39] c++: Implement __is_unbounded_array built-in trait Ken Matsui
2023-10-10 22:10         ` [PATCH v16 10/39] libstdc++: Optimize is_unbounded_array trait performance Ken Matsui
2023-10-10 22:10         ` [PATCH v16 11/39] c++: Implement __is_bounded_array built-in trait Ken Matsui
2023-10-10 22:10         ` [PATCH v16 12/39] libstdc++: Optimize is_bounded_array trait performance Ken Matsui
2023-10-10 22:10         ` [PATCH v16 13/39] c++: Implement __is_scoped_enum built-in trait Ken Matsui
2023-10-10 22:10         ` [PATCH v16 14/39] libstdc++: Optimize is_scoped_enum trait performance Ken Matsui
2023-10-10 22:10         ` [PATCH v16 15/39] c++: Implement __is_member_pointer built-in trait Ken Matsui
2023-10-10 22:10         ` [PATCH v16 16/39] libstdc++: Optimize is_member_pointer trait performance Ken Matsui
2023-10-10 22:10         ` [PATCH v16 17/39] c++: Implement __is_member_function_pointer built-in trait Ken Matsui
2023-10-10 22:10         ` [PATCH v16 18/39] libstdc++: Optimize is_member_function_pointer trait performance Ken Matsui
2023-10-10 22:10         ` [PATCH v16 19/39] c++: Implement __is_member_object_pointer built-in trait Ken Matsui
2023-10-10 22:10         ` [PATCH v16 20/39] libstdc++: Optimize is_member_object_pointer trait performance Ken Matsui
2023-10-10 22:10         ` [PATCH v16 21/39] c++: Implement __is_reference built-in trait Ken Matsui
2023-10-10 22:10         ` [PATCH v16 22/39] libstdc++: Optimize is_reference trait performance Ken Matsui
2023-10-10 22:10         ` [PATCH v16 23/39] c++: Implement __is_function built-in trait Ken Matsui
2023-10-10 22:10         ` [PATCH v16 24/39] libstdc++: Optimize is_function trait performance Ken Matsui
2023-10-10 22:10         ` [PATCH v16 25/39] libstdc++: Optimize is_object " Ken Matsui
2023-10-10 22:10         ` [PATCH v16 26/39] c++: Implement __remove_pointer built-in trait Ken Matsui
2023-10-10 22:10         ` [PATCH v16 27/39] libstdc++: Optimize remove_pointer trait performance Ken Matsui
2023-10-10 22:10         ` [PATCH v16 28/39] c++, libstdc++: Implement __is_pointer built-in trait Ken Matsui
2023-10-10 22:10         ` [PATCH v16 29/39] libstdc++: Optimize is_pointer trait performance Ken Matsui
2023-10-10 22:10         ` [PATCH v16 30/39] c++, libstdc++: Implement __is_arithmetic built-in trait Ken Matsui
2023-10-10 22:10         ` [PATCH v16 31/39] libstdc++: Optimize is_arithmetic trait performance Ken Matsui
2023-10-10 22:10         ` [PATCH v16 32/39] libstdc++: Optimize is_fundamental " Ken Matsui
2023-10-10 22:10         ` [PATCH v16 33/39] libstdc++: Optimize is_compound " Ken Matsui
2023-10-10 22:10         ` [PATCH v16 34/39] c++: Implement __is_unsigned built-in trait Ken Matsui
2023-10-10 22:10         ` [PATCH v16 35/39] libstdc++: Optimize is_unsigned trait performance Ken Matsui
2023-10-10 22:10         ` [PATCH v16 36/39] c++, libstdc++: Implement __is_signed built-in trait Ken Matsui
2023-10-10 22:10         ` [PATCH v16 37/39] libstdc++: Optimize is_signed trait performance Ken Matsui
2023-10-10 22:10         ` [PATCH v16 38/39] c++, libstdc++: Implement __is_scalar built-in trait Ken Matsui
2023-10-10 22:10         ` [PATCH v16 39/39] libstdc++: Optimize is_scalar trait performance Ken Matsui
2023-10-11 21:45         ` [PATCH v17 00/39] Optimize type traits performance Ken Matsui
2023-10-11 21:45           ` [PATCH v17 01/39] c++: Sort built-in traits alphabetically Ken Matsui
2023-10-11 21:45           ` [PATCH v17 02/39] c-family, c++: Look up built-in traits through gperf Ken Matsui
2023-10-12 17:02             ` Patrick Palka [this message]
2023-10-11 21:45           ` [PATCH v17 03/39] c++: Implement __is_const built-in trait Ken Matsui
2023-10-11 21:45           ` [PATCH v17 04/39] libstdc++: Optimize is_const trait performance Ken Matsui
2023-10-11 21:45           ` [PATCH v17 05/39] c++: Implement __is_volatile built-in trait Ken Matsui
2023-10-11 21:45           ` [PATCH v17 06/39] libstdc++: Optimize is_volatile trait performance Ken Matsui
2023-10-11 21:45           ` [PATCH v17 07/39] c++: Implement __is_array built-in trait Ken Matsui
2023-10-11 21:45           ` [PATCH v17 08/39] libstdc++: Optimize is_array trait performance Ken Matsui
2023-10-11 21:45           ` [PATCH v17 09/39] c++: Implement __is_unbounded_array built-in trait Ken Matsui
2023-10-11 21:45           ` [PATCH v17 10/39] libstdc++: Optimize is_unbounded_array trait performance Ken Matsui
2023-10-11 21:45           ` [PATCH v17 11/39] c++: Implement __is_bounded_array built-in trait Ken Matsui
2023-10-11 21:45           ` [PATCH v17 12/39] libstdc++: Optimize is_bounded_array trait performance Ken Matsui
2023-10-11 21:45           ` [PATCH v17 13/39] c++: Implement __is_scoped_enum built-in trait Ken Matsui
2023-10-11 21:45           ` [PATCH v17 14/39] libstdc++: Optimize is_scoped_enum trait performance Ken Matsui
2023-10-11 21:45           ` [PATCH v17 15/39] c++: Implement __is_member_pointer built-in trait Ken Matsui
2023-10-11 21:45           ` [PATCH v17 16/39] libstdc++: Optimize is_member_pointer trait performance Ken Matsui
2023-10-11 21:45           ` [PATCH v17 17/39] c++: Implement __is_member_function_pointer built-in trait Ken Matsui
2023-10-11 21:45           ` [PATCH v17 18/39] libstdc++: Optimize is_member_function_pointer trait performance Ken Matsui
2023-10-11 21:45           ` [PATCH v17 19/39] c++: Implement __is_member_object_pointer built-in trait Ken Matsui
2023-10-11 21:45           ` [PATCH v17 20/39] libstdc++: Optimize is_member_object_pointer trait performance Ken Matsui
2023-10-11 21:45           ` [PATCH v17 21/39] c++: Implement __is_reference built-in trait Ken Matsui
2023-10-11 21:45           ` [PATCH v17 22/39] libstdc++: Optimize is_reference trait performance Ken Matsui
2023-10-11 21:45           ` [PATCH v17 23/39] c++: Implement __is_function built-in trait Ken Matsui
2023-10-11 21:46           ` [PATCH v17 24/39] libstdc++: Optimize is_function trait performance Ken Matsui
2023-10-11 21:46           ` [PATCH v17 25/39] libstdc++: Optimize is_object " Ken Matsui
2023-10-11 21:46           ` [PATCH v17 26/39] c++: Implement __remove_pointer built-in trait Ken Matsui
2023-10-11 21:46           ` [PATCH v17 27/39] libstdc++: Optimize remove_pointer trait performance Ken Matsui
2023-10-11 21:46           ` [PATCH v17 28/39] c++, libstdc++: Implement __is_pointer built-in trait Ken Matsui
2023-10-11 21:46           ` [PATCH v17 29/39] libstdc++: Optimize is_pointer trait performance Ken Matsui
2023-10-11 21:46           ` [PATCH v17 30/39] c++, libstdc++: Implement __is_arithmetic built-in trait Ken Matsui
2023-10-11 21:46           ` [PATCH v17 31/39] libstdc++: Optimize is_arithmetic trait performance Ken Matsui
2023-10-11 21:46           ` [PATCH v17 32/39] libstdc++: Optimize is_fundamental " Ken Matsui
2023-10-11 21:46           ` [PATCH v17 33/39] libstdc++: Optimize is_compound " Ken Matsui
2023-10-11 21:46           ` [PATCH v17 34/39] c++: Implement __is_unsigned built-in trait Ken Matsui
2023-10-11 21:46           ` [PATCH v17 35/39] libstdc++: Optimize is_unsigned trait performance Ken Matsui
2023-10-11 21:46           ` [PATCH v17 36/39] c++, libstdc++: Implement __is_signed built-in trait Ken Matsui
2023-10-11 21:46           ` [PATCH v17 37/39] libstdc++: Optimize is_signed trait performance Ken Matsui
2023-10-11 21:46           ` [PATCH v17 38/39] c++, libstdc++: Implement __is_scalar built-in trait Ken Matsui
2023-10-11 21:46           ` [PATCH v17 39/39] libstdc++: Optimize is_scalar trait performance Ken Matsui
2023-10-13 21:03           ` [PATCH v18 00/40] Optimize type traits performance Ken Matsui
2023-10-13 21:03             ` [PATCH v18 01/40] c++: Sort built-in traits alphabetically Ken Matsui
2023-10-13 21:03             ` [PATCH v18 02/40] c-family, c++: Look up built-in traits through gperf Ken Matsui
2023-10-13 21:03             ` [PATCH v18 03/40] c++: Accept the use of non-function-like built-in trait identifiers Ken Matsui
2023-10-13 21:04             ` [PATCH v18 04/40] c++: Implement __is_const built-in trait Ken Matsui
2023-10-13 21:04             ` [PATCH v18 05/40] libstdc++: Optimize is_const trait performance Ken Matsui
2023-10-13 21:04             ` [PATCH v18 06/40] c++: Implement __is_volatile built-in trait Ken Matsui
2023-10-13 21:04             ` [PATCH v18 07/40] libstdc++: Optimize is_volatile trait performance Ken Matsui
2023-10-13 21:04             ` [PATCH v18 08/40] c++: Implement __is_array built-in trait Ken Matsui
2023-10-13 21:04             ` [PATCH v18 09/40] libstdc++: Optimize is_array trait performance Ken Matsui
2023-10-13 21:04             ` [PATCH v18 10/40] c++: Implement __is_unbounded_array built-in trait Ken Matsui
2023-10-13 21:04             ` [PATCH v18 11/40] libstdc++: Optimize is_unbounded_array trait performance Ken Matsui
2023-10-13 21:04             ` [PATCH v18 12/40] c++: Implement __is_bounded_array built-in trait Ken Matsui
2023-10-13 21:04             ` [PATCH v18 13/40] libstdc++: Optimize is_bounded_array trait performance Ken Matsui
2023-10-13 21:04             ` [PATCH v18 14/40] c++: Implement __is_scoped_enum built-in trait Ken Matsui
2023-10-13 21:04             ` [PATCH v18 15/40] libstdc++: Optimize is_scoped_enum trait performance Ken Matsui
2023-10-13 21:04             ` [PATCH v18 16/40] c++: Implement __is_member_pointer built-in trait Ken Matsui
2023-10-13 21:04             ` [PATCH v18 17/40] libstdc++: Optimize is_member_pointer trait performance Ken Matsui
2023-10-13 21:04             ` [PATCH v18 18/40] c++: Implement __is_member_function_pointer built-in trait Ken Matsui
2023-10-13 21:04             ` [PATCH v18 19/40] libstdc++: Optimize is_member_function_pointer trait performance Ken Matsui
2023-10-13 21:04             ` [PATCH v18 20/40] c++: Implement __is_member_object_pointer built-in trait Ken Matsui
2023-10-13 21:04             ` [PATCH v18 21/40] libstdc++: Optimize is_member_object_pointer trait performance Ken Matsui
2023-10-13 21:04             ` [PATCH v18 22/40] c++: Implement __is_reference built-in trait Ken Matsui
2023-10-13 21:04             ` [PATCH v18 23/40] libstdc++: Optimize is_reference trait performance Ken Matsui
2023-10-13 21:04             ` [PATCH v18 24/40] c++: Implement __is_function built-in trait Ken Matsui
2023-10-13 21:04             ` [PATCH v18 25/40] libstdc++: Optimize is_function trait performance Ken Matsui
2023-10-13 21:04             ` [PATCH v18 26/40] libstdc++: Optimize is_object " Ken Matsui
2023-10-13 21:04             ` [PATCH v18 27/40] c++: Implement __remove_pointer built-in trait Ken Matsui
2023-10-13 21:04             ` [PATCH v18 28/40] libstdc++: Optimize remove_pointer trait performance Ken Matsui
2023-10-13 21:04             ` [PATCH v18 29/40] c++: Implement __is_pointer built-in trait Ken Matsui
2023-10-13 21:04             ` [PATCH v18 30/40] libstdc++: Optimize is_pointer trait performance Ken Matsui
2023-10-13 21:04             ` [PATCH v18 31/40] c++: Implement __is_arithmetic built-in trait Ken Matsui
2023-10-13 21:04             ` [PATCH v18 32/40] libstdc++: Optimize is_arithmetic trait performance Ken Matsui
2023-10-13 21:04             ` [PATCH v18 33/40] libstdc++: Optimize is_fundamental " Ken Matsui
2023-10-13 21:04             ` [PATCH v18 34/40] libstdc++: Optimize is_compound " Ken Matsui
2023-10-13 21:04             ` [PATCH v18 35/40] c++: Implement __is_unsigned built-in trait Ken Matsui
2023-10-13 21:04             ` [PATCH v18 36/40] libstdc++: Optimize is_unsigned trait performance Ken Matsui
2023-10-13 21:04             ` [PATCH v18 37/40] c++: Implement __is_signed built-in trait Ken Matsui
2023-10-13 21:04             ` [PATCH v18 38/40] libstdc++: Optimize is_signed trait performance Ken Matsui
2023-10-13 21:04             ` [PATCH v18 39/40] c++: Implement __is_scalar built-in trait Ken Matsui
2023-10-13 21:04             ` [PATCH v18 40/40] libstdc++: Optimize is_scalar trait performance Ken Matsui
2023-10-13 22:37             ` [PATCH v19 00/40] Optimize type traits performance Ken Matsui
2023-10-13 22:37               ` [PATCH v19 01/40] c++: Sort built-in traits alphabetically Ken Matsui
2023-10-13 22:37               ` [PATCH v19 02/40] c-family, c++: Look up built-in traits through gperf Ken Matsui
2023-10-15 20:43                 ` Patrick Palka
2023-10-15 21:04                   ` Ken Matsui
2023-10-15 21:50                     ` Patrick Palka
2023-10-15 21:52                       ` Ken Matsui
2023-10-13 22:37               ` [PATCH v19 03/40] c++: Accept the use of built-in trait identifiers Ken Matsui
2023-10-13 22:37               ` [PATCH v19 04/40] c++: Implement __is_const built-in trait Ken Matsui
2023-10-13 22:37               ` [PATCH v19 05/40] libstdc++: Optimize is_const trait performance Ken Matsui
2023-10-13 22:37               ` [PATCH v19 06/40] c++: Implement __is_volatile built-in trait Ken Matsui
2023-10-13 22:37               ` [PATCH v19 07/40] libstdc++: Optimize is_volatile trait performance Ken Matsui
2023-10-13 22:37               ` [PATCH v19 08/40] c++: Implement __is_array built-in trait Ken Matsui
2023-10-13 22:37               ` [PATCH v19 09/40] libstdc++: Optimize is_array trait performance Ken Matsui
2023-10-13 22:37               ` [PATCH v19 10/40] c++: Implement __is_unbounded_array built-in trait Ken Matsui
2023-10-13 22:37               ` [PATCH v19 11/40] libstdc++: Optimize is_unbounded_array trait performance Ken Matsui
2023-10-13 22:37               ` [PATCH v19 12/40] c++: Implement __is_bounded_array built-in trait Ken Matsui
2023-10-13 22:37               ` [PATCH v19 13/40] libstdc++: Optimize is_bounded_array trait performance Ken Matsui
2023-10-13 22:37               ` [PATCH v19 14/40] c++: Implement __is_scoped_enum built-in trait Ken Matsui
2023-10-13 22:37               ` [PATCH v19 15/40] libstdc++: Optimize is_scoped_enum trait performance Ken Matsui
2023-10-13 22:37               ` [PATCH v19 16/40] c++: Implement __is_member_pointer built-in trait Ken Matsui
2023-10-13 22:37               ` [PATCH v19 17/40] libstdc++: Optimize is_member_pointer trait performance Ken Matsui
2023-10-13 22:37               ` [PATCH v19 18/40] c++: Implement __is_member_function_pointer built-in trait Ken Matsui
2023-10-13 22:37               ` [PATCH v19 19/40] libstdc++: Optimize is_member_function_pointer trait performance Ken Matsui
2023-10-13 22:37               ` [PATCH v19 20/40] c++: Implement __is_member_object_pointer built-in trait Ken Matsui
2023-10-13 22:37               ` [PATCH v19 21/40] libstdc++: Optimize is_member_object_pointer trait performance Ken Matsui
2023-10-13 22:37               ` [PATCH v19 22/40] c++: Implement __is_reference built-in trait Ken Matsui
2023-10-13 22:37               ` [PATCH v19 23/40] libstdc++: Optimize is_reference trait performance Ken Matsui
2023-10-13 22:37               ` [PATCH v19 24/40] c++: Implement __is_function built-in trait Ken Matsui
2023-10-13 22:37               ` [PATCH v19 25/40] libstdc++: Optimize is_function trait performance Ken Matsui
2023-10-13 22:37               ` [PATCH v19 26/40] libstdc++: Optimize is_object " Ken Matsui
2023-10-13 22:37               ` [PATCH v19 27/40] c++: Implement __remove_pointer built-in trait Ken Matsui
2023-10-13 22:37               ` [PATCH v19 28/40] libstdc++: Optimize remove_pointer trait performance Ken Matsui
2023-10-13 22:37               ` [PATCH v19 29/40] c++: Implement __is_pointer built-in trait Ken Matsui
2023-10-13 22:37               ` [PATCH v19 30/40] libstdc++: Optimize is_pointer trait performance Ken Matsui
2023-10-13 22:37               ` [PATCH v19 31/40] c++: Implement __is_arithmetic built-in trait Ken Matsui
2023-10-13 22:37               ` [PATCH v19 32/40] libstdc++: Optimize is_arithmetic trait performance Ken Matsui
2023-10-13 22:37               ` [PATCH v19 33/40] libstdc++: Optimize is_fundamental " Ken Matsui
2023-10-13 22:37               ` [PATCH v19 34/40] libstdc++: Optimize is_compound " Ken Matsui
2023-10-13 22:37               ` [PATCH v19 35/40] c++: Implement __is_unsigned built-in trait Ken Matsui
2023-10-13 22:37               ` [PATCH v19 36/40] libstdc++: Optimize is_unsigned trait performance Ken Matsui
2023-10-13 22:37               ` [PATCH v19 37/40] c++: Implement __is_signed built-in trait Ken Matsui
2023-10-13 22:37               ` [PATCH v19 38/40] libstdc++: Optimize is_signed trait performance Ken Matsui
2023-10-13 22:37               ` [PATCH v19 39/40] c++: Implement __is_scalar built-in trait Ken Matsui
2023-10-13 22:37               ` [PATCH v19 40/40] libstdc++: Optimize is_scalar trait performance Ken Matsui
2023-10-16  0:09               ` [PATCH v20 00/40] Optimize type traits performance Ken Matsui
2023-10-16  0:09                 ` [PATCH v20 01/40] c++: Sort built-in traits alphabetically Ken Matsui
2023-10-16 15:16                   ` Patrick Palka
2023-10-16 20:11                     ` Ken Matsui
2023-10-16 21:12                       ` Patrick Palka
2023-10-16 21:30                         ` Ken Matsui
2023-10-16  0:09                 ` [PATCH v20 02/40] c-family, c++: Look up built-in traits via identifier node Ken Matsui
2023-10-16 14:55                   ` Patrick Palka
2023-10-16 19:57                     ` Ken Matsui
2023-10-16 21:06                       ` Patrick Palka
2023-10-16 21:27                         ` Ken Matsui
2023-10-16  0:09                 ` [PATCH v20 03/40] c++: Accept the use of built-in trait identifiers Ken Matsui
2023-10-16 15:00                   ` Patrick Palka
2023-10-16  0:09                 ` [PATCH v20 04/40] c++: Implement __is_const built-in trait Ken Matsui
2023-10-16  0:09                 ` [PATCH v20 05/40] libstdc++: Optimize is_const trait performance Ken Matsui
2023-10-16  0:09                 ` [PATCH v20 06/40] c++: Implement __is_volatile built-in trait Ken Matsui
2023-10-16  0:09                 ` [PATCH v20 07/40] libstdc++: Optimize is_volatile trait performance Ken Matsui
2023-10-16  0:09                 ` [PATCH v20 08/40] c++: Implement __is_array built-in trait Ken Matsui
2023-10-16  0:09                 ` [PATCH v20 09/40] libstdc++: Optimize is_array trait performance Ken Matsui
2023-10-16  0:09                 ` [PATCH v20 10/40] c++: Implement __is_unbounded_array built-in trait Ken Matsui
2023-10-16  0:09                 ` [PATCH v20 11/40] libstdc++: Optimize is_unbounded_array trait performance Ken Matsui
2023-10-16  0:09                 ` [PATCH v20 12/40] c++: Implement __is_bounded_array built-in trait Ken Matsui
2023-10-16  0:09                 ` [PATCH v20 13/40] libstdc++: Optimize is_bounded_array trait performance Ken Matsui
2023-10-16  0:09                 ` [PATCH v20 14/40] c++: Implement __is_scoped_enum built-in trait Ken Matsui
2023-10-16  0:09                 ` [PATCH v20 15/40] libstdc++: Optimize is_scoped_enum trait performance Ken Matsui
2023-10-16  0:10                 ` [PATCH v20 16/40] c++: Implement __is_member_pointer built-in trait Ken Matsui
2023-10-16  0:10                 ` [PATCH v20 17/40] libstdc++: Optimize is_member_pointer trait performance Ken Matsui
2023-10-16  0:10                 ` [PATCH v20 18/40] c++: Implement __is_member_function_pointer built-in trait Ken Matsui
2023-10-16  0:10                 ` [PATCH v20 19/40] libstdc++: Optimize is_member_function_pointer trait performance Ken Matsui
2023-10-16  0:10                 ` [PATCH v20 20/40] c++: Implement __is_member_object_pointer built-in trait Ken Matsui
2023-10-16  0:10                 ` [PATCH v20 21/40] libstdc++: Optimize is_member_object_pointer trait performance Ken Matsui
2023-10-16  0:10                 ` [PATCH v20 22/40] c++: Implement __is_reference built-in trait Ken Matsui
2023-10-16  0:10                 ` [PATCH v20 23/40] libstdc++: Optimize is_reference trait performance Ken Matsui
2023-10-16  0:10                 ` [PATCH v20 24/40] c++: Implement __is_function built-in trait Ken Matsui
2023-10-16  0:10                 ` [PATCH v20 25/40] libstdc++: Optimize is_function trait performance Ken Matsui
2023-10-16  0:10                 ` [PATCH v20 26/40] libstdc++: Optimize is_object " Ken Matsui
2023-10-16 18:04                   ` Patrick Palka
2023-10-16 20:26                     ` Ken Matsui
2023-10-16  0:10                 ` [PATCH v20 27/40] c++: Implement __remove_pointer built-in trait Ken Matsui
2023-10-16  0:10                 ` [PATCH v20 28/40] libstdc++: Optimize remove_pointer trait performance Ken Matsui
2023-10-16  0:10                 ` [PATCH v20 29/40] c++: Implement __is_pointer built-in trait Ken Matsui
2023-10-16  0:10                 ` [PATCH v20 30/40] libstdc++: Optimize is_pointer trait performance Ken Matsui
2023-10-16 16:36                   ` Patrick Palka
2023-10-16 20:22                     ` Ken Matsui
2023-10-16  0:10                 ` [PATCH v20 31/40] c++: Implement __is_arithmetic built-in trait Ken Matsui
2023-10-16 17:16                   ` Patrick Palka
2023-10-16 20:25                     ` Ken Matsui
2023-10-16  0:10                 ` [PATCH v20 32/40] libstdc++: Optimize is_arithmetic trait performance Ken Matsui
2023-10-16  0:10                 ` [PATCH v20 33/40] libstdc++: Optimize is_fundamental " Ken Matsui
2023-10-16  0:10                 ` [PATCH v20 34/40] libstdc++: Optimize is_compound " Ken Matsui
2023-10-16  0:10                 ` [PATCH v20 35/40] c++: Implement __is_unsigned built-in trait Ken Matsui
2023-10-16  0:10                 ` [PATCH v20 36/40] libstdc++: Optimize is_unsigned trait performance Ken Matsui
2023-10-16  0:10                 ` [PATCH v20 37/40] c++: Implement __is_signed built-in trait Ken Matsui
2023-10-16  0:10                 ` [PATCH v20 38/40] libstdc++: Optimize is_signed trait performance Ken Matsui
2023-10-16  0:10                 ` [PATCH v20 39/40] c++: Implement __is_scalar built-in trait Ken Matsui
2023-10-16  0:10                 ` [PATCH v20 40/40] libstdc++: Optimize is_scalar trait performance Ken Matsui
2023-10-17 11:27                 ` [PATCH v21 00/30] Optimize type traits performance Ken Matsui
2023-10-17 11:27                   ` [PATCH v21 01/30] c-family, c++: Look up built-in traits via identifier node Ken Matsui
2023-10-17 11:27                   ` [PATCH v21 02/30] c++: Accept the use of built-in trait identifiers Ken Matsui
2023-10-17 11:27                   ` [PATCH v21 03/30] c++: Implement __is_const built-in trait Ken Matsui
2023-10-17 11:27                   ` [PATCH v21 04/30] libstdc++: Optimize std::is_const compilation performance Ken Matsui
2023-10-17 11:27                   ` [PATCH v21 05/30] c++: Implement __is_volatile built-in trait Ken Matsui
2023-10-17 11:27                   ` [PATCH v21 06/30] libstdc++: Optimize std::is_volatile compilation performance Ken Matsui
2023-10-17 11:27                   ` [PATCH v21 07/30] c++: Implement __is_array built-in trait Ken Matsui
2023-10-17 11:27                   ` [PATCH v21 08/30] libstdc++: Optimize std::is_array compilation performance Ken Matsui
2023-10-17 11:27                   ` [PATCH v21 09/30] c++: Implement __is_unbounded_array built-in trait Ken Matsui
2023-10-17 11:27                   ` [PATCH v21 10/30] libstdc++: Optimize std::is_unbounded_array compilation performance Ken Matsui
2023-10-17 11:27                   ` [PATCH v21 11/30] c++: Implement __is_bounded_array built-in trait Ken Matsui
2023-10-17 11:27                   ` [PATCH v21 12/30] libstdc++: Optimize std::is_bounded_array compilation performance Ken Matsui
2023-10-17 11:27                   ` [PATCH v21 13/30] c++: Implement __is_scoped_enum built-in trait Ken Matsui
2023-10-17 11:27                   ` [PATCH v21 14/30] libstdc++: Optimize std::is_scoped_enum compilation performance Ken Matsui
2023-10-17 11:27                   ` [PATCH v21 15/30] c++: Implement __is_member_pointer built-in trait Ken Matsui
2023-10-17 11:27                   ` [PATCH v21 16/30] libstdc++: Optimize std::is_member_pointer compilation performance Ken Matsui
2023-10-17 11:27                   ` [PATCH v21 17/30] c++: Implement __is_member_function_pointer built-in trait Ken Matsui
2023-10-17 11:27                   ` [PATCH v21 18/30] libstdc++: Optimize std::is_member_function_pointer compilation performance Ken Matsui
2023-10-17 11:27                   ` [PATCH v21 19/30] c++: Implement __is_member_object_pointer built-in trait Ken Matsui
2023-10-17 11:27                   ` [PATCH v21 20/30] libstdc++: Optimize std::is_member_object_pointer compilation performance Ken Matsui
2023-10-17 11:27                   ` [PATCH v21 21/30] c++: Implement __is_reference built-in trait Ken Matsui
2023-10-17 11:27                   ` [PATCH v21 22/30] libstdc++: Optimize std::is_reference compilation performance Ken Matsui
2023-10-17 11:27                   ` [PATCH v21 23/30] c++: Implement __is_function built-in trait Ken Matsui
2023-10-17 11:27                   ` [PATCH v21 24/30] libstdc++: Optimize std::is_function compilation performance Ken Matsui
2023-10-17 11:27                   ` [PATCH v21 25/30] c++: Implement __is_object built-in trait Ken Matsui
2023-10-17 11:27                   ` [PATCH v21 26/30] libstdc++: Optimize std::is_object compilation performance Ken Matsui
2023-10-17 11:27                   ` [PATCH v21 27/30] c++: Implement __remove_pointer built-in trait Ken Matsui
2023-10-17 11:27                   ` [PATCH v21 28/30] libstdc++: Optimize std::remove_pointer compilation performance Ken Matsui
2023-10-17 11:28                   ` [PATCH v21 29/30] c++: Implement __is_pointer built-in trait Ken Matsui
2023-10-17 11:28                   ` [PATCH v21 30/30] libstdc++: Optimize std::is_pointer compilation performance Ken Matsui
2023-10-17 11:36                   ` [PATCH v22 00/31] Optimize type traits performance Ken Matsui
2023-10-17 11:36                     ` [PATCH v22 01/31] c++: Sort built-in traits alphabetically Ken Matsui
2023-10-17 11:36                     ` [PATCH v22 02/31] c-family, c++: Look up built-in traits via identifier node Ken Matsui
2023-10-17 17:04                       ` Patrick Palka
2023-10-17 11:36                     ` [PATCH v22 03/31] c++: Accept the use of built-in trait identifiers Ken Matsui
2023-10-17 11:36                     ` [PATCH v22 04/31] c++: Implement __is_const built-in trait Ken Matsui
2023-10-17 11:36                     ` [PATCH v22 05/31] libstdc++: Optimize std::is_const compilation performance Ken Matsui
2023-10-17 11:36                     ` [PATCH v22 06/31] c++: Implement __is_volatile built-in trait Ken Matsui
2023-10-17 11:36                     ` [PATCH v22 07/31] libstdc++: Optimize std::is_volatile compilation performance Ken Matsui
2023-10-17 11:36                     ` [PATCH v22 08/31] c++: Implement __is_array built-in trait Ken Matsui
2023-10-17 11:36                     ` [PATCH v22 09/31] libstdc++: Optimize std::is_array compilation performance Ken Matsui
2023-10-17 11:36                     ` [PATCH v22 10/31] c++: Implement __is_unbounded_array built-in trait Ken Matsui
2023-10-17 11:36                     ` [PATCH v22 11/31] libstdc++: Optimize std::is_unbounded_array compilation performance Ken Matsui
2023-10-17 11:36                     ` [PATCH v22 12/31] c++: Implement __is_bounded_array built-in trait Ken Matsui
2023-10-17 11:36                     ` [PATCH v22 13/31] libstdc++: Optimize std::is_bounded_array compilation performance Ken Matsui
2023-10-17 11:36                     ` [PATCH v22 14/31] c++: Implement __is_scoped_enum built-in trait Ken Matsui
2023-10-17 11:36                     ` [PATCH v22 15/31] libstdc++: Optimize std::is_scoped_enum compilation performance Ken Matsui
2023-10-17 11:36                     ` [PATCH v22 16/31] c++: Implement __is_member_pointer built-in trait Ken Matsui
2023-10-17 11:36                     ` [PATCH v22 17/31] libstdc++: Optimize std::is_member_pointer compilation performance Ken Matsui
2023-10-17 11:36                     ` [PATCH v22 18/31] c++: Implement __is_member_function_pointer built-in trait Ken Matsui
2023-10-17 11:36                     ` [PATCH v22 19/31] libstdc++: Optimize std::is_member_function_pointer compilation performance Ken Matsui
2023-10-17 11:36                     ` [PATCH v22 20/31] c++: Implement __is_member_object_pointer built-in trait Ken Matsui
2023-10-17 11:36                     ` [PATCH v22 21/31] libstdc++: Optimize std::is_member_object_pointer compilation performance Ken Matsui
2023-10-17 11:36                     ` [PATCH v22 22/31] c++: Implement __is_reference built-in trait Ken Matsui
2023-10-17 11:36                     ` [PATCH v22 23/31] libstdc++: Optimize std::is_reference compilation performance Ken Matsui
2023-10-17 11:36                     ` [PATCH v22 24/31] c++: Implement __is_function built-in trait Ken Matsui
2023-10-17 11:36                     ` [PATCH v22 25/31] libstdc++: Optimize std::is_function compilation performance Ken Matsui
2023-10-17 11:36                     ` [PATCH v22 26/31] c++: Implement __is_object built-in trait Ken Matsui
2023-10-17 11:36                     ` [PATCH v22 27/31] libstdc++: Optimize std::is_object compilation performance Ken Matsui
2023-10-17 11:36                     ` [PATCH v22 28/31] c++: Implement __remove_pointer built-in trait Ken Matsui
2023-10-17 11:36                     ` [PATCH v22 29/31] libstdc++: Optimize std::remove_pointer compilation performance Ken Matsui
2023-10-17 11:36                     ` [PATCH v22 30/31] c++: Implement __is_pointer built-in trait Ken Matsui
2023-10-17 11:36                     ` [PATCH v22 31/31] libstdc++: Optimize std::is_pointer compilation performance Ken Matsui
2023-10-20 13:53                     ` [PATCH v23 00/33] Optimize type traits performance Ken Matsui
2023-10-20 13:53                       ` [PATCH v23 01/33] c++: Sort built-in traits alphabetically Ken Matsui
2023-10-20 13:53                       ` [PATCH v23 02/33] c-family, c++: Look up built-in traits via identifier node Ken Matsui
2023-10-20 19:11                         ` Patrick Palka
2023-10-20 20:00                           ` Ken Matsui
2023-10-23 20:27                         ` Jason Merrill
2023-10-23 21:08                           ` Ken Matsui
2023-10-20 13:53                       ` [PATCH v23 03/33] c++: Accept the use of built-in trait identifiers Ken Matsui
2023-10-23 20:36                         ` Jason Merrill
2023-10-23 21:08                           ` Ken Matsui
2023-10-20 13:53                       ` [PATCH v23 04/33] c++: Implement __is_const built-in trait Ken Matsui
2023-10-20 13:53                       ` [PATCH v23 05/33] libstdc++: Optimize std::is_const compilation performance Ken Matsui
2023-10-20 13:53                       ` [PATCH v23 06/33] c++: Implement __is_volatile built-in trait Ken Matsui
2023-10-20 13:53                       ` [PATCH v23 07/33] libstdc++: Optimize std::is_volatile compilation performance Ken Matsui
2023-10-20 13:53                       ` [PATCH v23 08/33] c++: Implement __is_array built-in trait Ken Matsui
2023-10-20 13:53                       ` [PATCH v23 09/33] libstdc++: Optimize std::is_array compilation performance Ken Matsui
2023-10-20 13:53                       ` [PATCH v23 10/33] c++: Implement __is_unbounded_array built-in trait Ken Matsui
2023-10-20 13:53                       ` [PATCH v23 11/33] libstdc++: Optimize std::is_unbounded_array compilation performance Ken Matsui
2023-10-20 13:53                       ` [PATCH v23 12/33] c++: Implement __is_bounded_array built-in trait Ken Matsui
2023-10-20 13:53                       ` [PATCH v23 13/33] libstdc++: Optimize std::is_bounded_array compilation performance Ken Matsui
2023-10-20 13:53                       ` [PATCH v23 14/33] c++: Implement __is_scoped_enum built-in trait Ken Matsui
2023-10-20 13:53                       ` [PATCH v23 15/33] libstdc++: Optimize std::is_scoped_enum compilation performance Ken Matsui
2023-10-20 13:53                       ` [PATCH v23 16/33] c++: Implement __is_member_pointer built-in trait Ken Matsui
2023-10-20 13:53                       ` [PATCH v23 17/33] libstdc++: Optimize std::is_member_pointer compilation performance Ken Matsui
2023-10-20 13:53                       ` [PATCH v23 18/33] c++: Implement __is_member_function_pointer built-in trait Ken Matsui
2023-10-20 13:53                       ` [PATCH v23 19/33] libstdc++: Optimize std::is_member_function_pointer compilation performance Ken Matsui
2023-10-20 13:53                       ` [PATCH v23 20/33] c++: Implement __is_member_object_pointer built-in trait Ken Matsui
2023-10-20 13:53                       ` [PATCH v23 21/33] libstdc++: Optimize std::is_member_object_pointer compilation performance Ken Matsui
2023-10-20 13:53                       ` [PATCH v23 22/33] c++: Implement __is_reference built-in trait Ken Matsui
2023-10-20 13:53                       ` [PATCH v23 23/33] libstdc++: Optimize std::is_reference compilation performance Ken Matsui
2023-10-20 13:53                       ` [PATCH v23 24/33] c++: Implement __is_function built-in trait Ken Matsui
2023-10-20 13:53                       ` [PATCH v23 25/33] libstdc++: Optimize std::is_function compilation performance Ken Matsui
2023-10-20 13:53                       ` [PATCH v23 26/33] c++: Implement __is_object built-in trait Ken Matsui
2023-10-20 13:53                       ` [PATCH v23 27/33] libstdc++: Optimize std::is_object compilation performance Ken Matsui
2023-10-20 13:53                       ` [PATCH v23 28/33] c++: Implement __remove_pointer built-in trait Ken Matsui
2023-10-20 13:53                       ` [PATCH v23 29/33] libstdc++: Optimize std::remove_pointer compilation performance Ken Matsui
2023-10-20 13:53                       ` [PATCH v23 30/33] c++: Implement __is_pointer built-in trait Ken Matsui
2023-10-20 13:53                       ` [PATCH v23 31/33] libstdc++: Optimize std::is_pointer compilation performance Ken Matsui
2023-10-22 12:06                         ` Ken Matsui
2023-10-23 17:00                           ` Patrick Palka
2023-10-23 17:12                             ` Ken Matsui
2023-10-20 13:53                       ` [PATCH v23 32/33] c++: Implement __is_invocable built-in trait Ken Matsui
2023-10-20 21:29                         ` Patrick Palka
2023-10-20 21:31                           ` Patrick Palka
2023-10-20 21:37                             ` Patrick Palka
2023-10-23 21:23                               ` Jason Merrill
2024-02-20  1:35                                 ` Ken Matsui
2023-10-20 13:53                       ` [PATCH v23 33/33] libstdc++: Optimize std::is_invocable compilation performance Ken Matsui
2023-10-20 16:16                       ` [PATCH v24 00/33] Optimize type traits performance Ken Matsui
2023-10-20 16:17                         ` [PATCH v24 33/33] libstdc++: Optimize std::is_invocable compilation performance Ken Matsui
2023-10-23 17:04                           ` Patrick Palka
2023-10-23 17:14                             ` Ken Matsui
2023-10-23 17:38                               ` Patrick Palka
2023-10-23 17:47                                 ` Ken Matsui
2023-10-24  2:00                         ` [PATCH v25 00/33] Optimize type traits " Ken Matsui
2023-10-24  2:00                           ` [PATCH v25 01/33] c++: Sort built-in traits alphabetically Ken Matsui
2023-10-24  2:00                           ` [PATCH v25 02/33] c-family, c++: Look up built-in traits via identifier node Ken Matsui
2023-10-24  2:00                           ` [PATCH v25 03/33] c++: Accept the use of built-in trait identifiers Ken Matsui
2023-10-24  2:00                           ` [PATCH v25 04/33] c++: Implement __is_const built-in trait Ken Matsui
2023-10-24  2:00                           ` [PATCH v25 05/33] libstdc++: Optimize std::is_const compilation performance Ken Matsui
2023-10-24  2:00                           ` [PATCH v25 06/33] c++: Implement __is_volatile built-in trait Ken Matsui
2023-10-24  2:00                           ` [PATCH v25 07/33] libstdc++: Optimize std::is_volatile compilation performance Ken Matsui
2023-10-24  2:00                           ` [PATCH v25 08/33] c++: Implement __is_array built-in trait Ken Matsui
2023-10-24  2:00                           ` [PATCH v25 09/33] libstdc++: Optimize std::is_array compilation performance Ken Matsui
2023-10-24  2:00                           ` [PATCH v25 10/33] c++: Implement __is_unbounded_array built-in trait Ken Matsui
2023-10-24  2:00                           ` [PATCH v25 11/33] libstdc++: Optimize std::is_unbounded_array compilation performance Ken Matsui
2023-10-24  2:00                           ` [PATCH v25 12/33] c++: Implement __is_bounded_array built-in trait Ken Matsui
2023-10-24  2:00                           ` [PATCH v25 13/33] libstdc++: Optimize std::is_bounded_array compilation performance Ken Matsui
2023-10-24  2:00                           ` [PATCH v25 14/33] c++: Implement __is_scoped_enum built-in trait Ken Matsui
2023-10-24  2:00                           ` [PATCH v25 15/33] libstdc++: Optimize std::is_scoped_enum compilation performance Ken Matsui
2023-10-24  2:00                           ` [PATCH v25 16/33] c++: Implement __is_member_pointer built-in trait Ken Matsui
2023-10-24  2:01                           ` [PATCH v25 17/33] libstdc++: Optimize std::is_member_pointer compilation performance Ken Matsui
2023-10-24  2:01                           ` [PATCH v25 18/33] c++: Implement __is_member_function_pointer built-in trait Ken Matsui
2023-10-24  2:01                           ` [PATCH v25 19/33] libstdc++: Optimize std::is_member_function_pointer compilation performance Ken Matsui
2023-10-24  2:01                           ` [PATCH v25 20/33] c++: Implement __is_member_object_pointer built-in trait Ken Matsui
2023-10-24  2:01                           ` [PATCH v25 21/33] libstdc++: Optimize std::is_member_object_pointer compilation performance Ken Matsui
2023-10-24  2:01                           ` [PATCH v25 22/33] c++: Implement __is_reference built-in trait Ken Matsui
2023-10-24  2:01                           ` [PATCH v25 23/33] libstdc++: Optimize std::is_reference compilation performance Ken Matsui
2023-10-24  2:01                           ` [PATCH v25 24/33] c++: Implement __is_function built-in trait Ken Matsui
2023-10-24  2:01                           ` [PATCH v25 25/33] libstdc++: Optimize std::is_function compilation performance Ken Matsui
2023-10-24 11:01                             ` Jonathan Wakely
2023-12-07  3:20                               ` Ken Matsui
2023-10-24  2:01                           ` [PATCH v25 26/33] c++: Implement __is_object built-in trait Ken Matsui
2023-10-24  2:01                           ` [PATCH v25 27/33] libstdc++: Optimize std::is_object compilation performance Ken Matsui
2023-10-24  2:01                           ` [PATCH v25 28/33] c++: Implement __remove_pointer built-in trait Ken Matsui
2023-10-24  2:01                           ` [PATCH v25 29/33] libstdc++: Optimize std::remove_pointer compilation performance Ken Matsui
2023-10-24  2:01                           ` [PATCH v25 30/33] c++: Implement __is_pointer built-in trait Ken Matsui
2023-10-24  2:01                           ` [PATCH v25 31/33] libstdc++: Optimize std::is_pointer compilation performance Ken Matsui
2023-10-24  2:01                           ` [PATCH v25 32/33] c++: Implement __is_invocable built-in trait Ken Matsui
2023-10-24  2:01                           ` [PATCH v25 33/33] libstdc++: Optimize std::is_invocable compilation performance Ken Matsui
2023-10-24  2:07                           ` [PATCH v25 00/33] Optimize type traits " Ken Matsui
2023-12-07  5:11                           ` [PATCH v26 00/23] " Ken Matsui
2023-12-10 18:19                             ` Jason Merrill
2023-12-11  2:25                               ` Ken Matsui
2023-12-16 16:40                               ` Jonathan Wakely
2023-12-16 16:56                                 ` Ken Matsui
2023-12-20  3:22                             ` Sandra Loosemore
2023-12-20 15:55                               ` Patrick Palka
2023-12-20 17:13                                 ` Ken Matsui
2023-12-07  5:32                           ` Ken Matsui
2023-12-07  5:32                             ` [PATCH v26 01/23] c++: Sort built-in traits alphabetically Ken Matsui
2023-12-07  5:32                             ` [PATCH v26 02/23] c-family, c++: Look up built-in traits via identifier node Ken Matsui
2023-12-07  5:32                             ` [PATCH v26 03/23] c++: Accept the use of built-in trait identifiers Ken Matsui
2023-12-07  5:32                             ` [PATCH v26 04/23] c++: Implement __is_array built-in trait Ken Matsui
2023-12-07  5:33                             ` [PATCH v26 05/23] libstdc++: Optimize std::is_array compilation performance Ken Matsui
2023-12-07  5:33                             ` [PATCH v26 06/23] c++: Implement __is_bounded_array built-in trait Ken Matsui
2023-12-07  5:33                             ` [PATCH v26 07/23] libstdc++: Optimize std::is_bounded_array compilation performance Ken Matsui
2023-12-07  5:33                             ` [PATCH v26 08/23] c++: Implement __is_scoped_enum built-in trait Ken Matsui
2023-12-07  5:33                             ` [PATCH v26 09/23] libstdc++: Optimize std::is_scoped_enum compilation performance Ken Matsui
2023-12-07  5:33                             ` [PATCH v26 10/23] c++: Implement __is_member_pointer built-in trait Ken Matsui
2023-12-07  5:33                             ` [PATCH v26 11/23] libstdc++: Optimize std::is_member_pointer compilation performance Ken Matsui
2023-12-07  5:33                             ` [PATCH v26 12/23] c++: Implement __is_member_function_pointer built-in trait Ken Matsui
2023-12-07  5:33                             ` [PATCH v26 13/23] libstdc++: Optimize std::is_member_function_pointer compilation performance Ken Matsui
2023-12-07  5:33                             ` [PATCH v26 14/23] c++: Implement __is_member_object_pointer built-in trait Ken Matsui
2023-12-07  5:33                             ` [PATCH v26 15/23] libstdc++: Optimize std::is_member_object_pointer compilation performance Ken Matsui
2023-12-07  5:33                             ` [PATCH v26 16/23] c++: Implement __is_reference built-in trait Ken Matsui
2023-12-07  5:33                             ` [PATCH v26 17/23] libstdc++: Optimize std::is_reference compilation performance Ken Matsui
2023-12-07  5:33                             ` [PATCH v26 18/23] c++: Implement __is_function built-in trait Ken Matsui
2023-12-07  5:33                             ` [PATCH v26 19/23] libstdc++: Optimize std::is_function compilation performance Ken Matsui
2023-12-07  5:33                             ` [PATCH v26 20/23] c++: Implement __is_object built-in trait Ken Matsui
2023-12-07  5:33                             ` [PATCH v26 21/23] libstdc++: Optimize std::is_object compilation performance Ken Matsui
2023-12-07  5:33                             ` [PATCH v26 22/23] c++: Implement __remove_pointer built-in trait Ken Matsui
2023-12-07  5:33                             ` [PATCH v26 23/23] libstdc++: Optimize std::remove_pointer compilation performance Ken Matsui

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=99d01572-89ae-77a6-2a9b-c52206d6072c@idea \
    --to=ppalka@redhat.com \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=jason@redhat.com \
    --cc=kmatsui@gcc.gnu.org \
    --cc=libstdc++@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).