Compare commits

...

10 Commits

Author SHA1 Message Date
Jonathan Wakely
39edc2aea2 libstdc++: Use global variables for default/max std in libstdc++.exp
This simplifies the v3-minimum-std procedure slightly, but the main
advantage is making v3_modules_std depend on v3_max_std so that we don't
have to update two separate variables when new effective targets such as
c++29 get added.

libstdc++-v3/ChangeLog:

	* testsuite/lib/libstdc++.exp (v3_default_std, v3_max_std): New
	global variables.
	(v3-minimum-std): Use globals instead of arguments.
	(v3_modules_std): Define in terms of $v3_max_std.
	(v3-dg-runtest): Use globals instead of local variables. Adjust
	call to v3-min-std.

Reviewed-by: Tomasz Kamiński <tkaminsk@redhat.com>
2026-02-19 14:50:58 +00:00
Jonathan Wakely
b8b518b942 libstdc++: Replace uses of "c++2a" effective target with "c++20"
libstdc++-v3/ChangeLog:

	* testsuite/lib/libstdc++.exp (v3-minimum-std): Remove special
	case for c++2a and TODO comment.
	* testsuite/20_util/is_pod/requirements/explicit_instantiation.cc:
	Replace c++2a effective target with c++20.
	* testsuite/20_util/is_pod/requirements/typedefs.cc: Likewise.
	* testsuite/20_util/is_pod/value.cc: Likewise.
	* testsuite/20_util/reference_wrapper/result_type.cc: Likewise.
	* testsuite/20_util/reference_wrapper/typedefs-2.cc: Likewise.
	* testsuite/20_util/reference_wrapper/typedefs-3.cc: Likewise.
	* testsuite/20_util/result_of/sfinae_friendly_1.cc: Likewise.
	* testsuite/20_util/tuple/78939.cc: Likewise.
	* testsuite/20_util/uses_allocator/69293_neg.cc: Likewise.
	* testsuite/20_util/uses_allocator/cons_neg.cc: Likewise.
	* testsuite/20_util/variable_templates_for_traits.cc: Likewise.
	* testsuite/experimental/type_traits/value.cc: Likewise.
	* testsuite/ext/malloc_allocator/variadic_construct.cc:
	Likewise.
	* testsuite/ext/new_allocator/variadic_construct.cc: Likewise.
	* testsuite/libstdc++-prettyprinters/chrono.cc: Likewise.
	* testsuite/libstdc++-prettyprinters/cxx20.cc: Likewise.
	* testsuite/std/ranges/iota/size.cc: Likewise.
	* testsuite/tr1/3_function_objects/result_of.cc: Likewise.

Reviewed-by: Tomasz Kamiński <tkaminsk@redhat.com>
2026-02-19 14:50:57 +00:00
Jeff Law
40186d1e93 Fix typo in last change.
gcc/testuite
	* gcc.dg/torture/pr124108.c: Fix typo.
2026-02-19 07:09:27 -07:00
jlaw
1b8bbe4a3d [PR tree-optimization/124108] Verify type_has_mode_precision before reassociating expressions
As Andrew noted in pr124108, the two patterns that reassociate expressions to
expose a rotate hidden by an embedded XOR need to check
type_has_mode_precision_p to avoid an ICE during gimple->RTL expansion.

This adds the necessary checks.  Bootstrapped and regression tested on x86.

	PR tree-optimization/124108
gcc/
	* match.pd (reassociating XOR to expose rotations): Check
	type_has_mode_precision_p before simplifying.

gcc/testsuite/
	* gcc.dg/torture/pr124108.c: New test.
2026-02-19 07:04:27 -07:00
Marek Polacek
dfd55005ea c++/reflection: introduce METAFN_KIND_ARG
This is mostly cosmetic.  It had to be a macro because a constexpr fn
would need a metafn_info* parameter but that struct comes only after
the %{ %} section in the gperf file, and we can only have one such
section.

gcc/cp/ChangeLog:

	* metafns.gperf: Define METAFN_KIND_ARG.
	* metafns.h: Regenerate.
	* reflect.cc (process_metafunction): Use METAFN_KIND_ARG.

Reviewed-by: Jason Merrill <jason@redhat.com>
2026-02-19 08:36:31 -05:00
Thomas Schwinge
8eb03ad712 Further fix up effective-target 'no_fsanitize_address' check
That got added with commit r11-4762-g65e82636bcdb72a878c2e53943e71b15dd9fb22d
"PR target/96307: Fix KASAN option checking", and already fixed up in
commit r12-3723-g6e6bf4cd21af39a7923bae007517ab43a4c3b36a
"Fix no_fsanitize_address effective target", but I just realized that on, for
example, standard x86_64-pc-linux-gnu, I'm unexpectedly seeing test cases
UNSUPPORTED, due to the effective-target 'no_fsanitize_address' check failing
with:

    Executing on host: [...]/build-gcc/gcc/xgcc -B[...]/build-gcc/gcc/  fsanitize_address3454287.c    -fdiagnostics-plain-output  -fsanitize=address -Wno-complain-wrong-lang  -lm  -o fsanitize_address3454287.exe    (timeout = 300)
    spawn [...]
    /usr/bin/ld: cannot find libasan_preinit.o: No such file or directory
    /usr/bin/ld: cannot find -lasan: No such file or directory
    collect2: error: ld returned 1 exit status
    compiler exited with status 1

Notice no setup for paths to build-tree libsanitizer.  Need to use a proper
'asan.exp' file with 'asan_init'/'asan_finish' calls to set up linker paths,
etc. -- however, all test cases using effective-target 'no_fsanitize_address'
are compilation test cases, so let's just reflect that in the effective-target
'no_fsanitize_address' check.  With that, I then get the desired:

    -UNSUPPORTED: gcc.dg/pr91441.c
    +PASS: gcc.dg/pr91441.c (test for excess errors)

    -UNSUPPORTED: gcc.dg/pr96260.c
    +PASS: gcc.dg/pr96260.c (test for excess errors)

    -UNSUPPORTED: gcc.dg/pr96307.c
    +PASS: gcc.dg/pr96307.c (test for excess errors)

    -UNSUPPORTED: gcc.dg/uninit-pr93100.c
    +PASS: gcc.dg/uninit-pr93100.c  (test for warnings, line 16)
    +PASS: gcc.dg/uninit-pr93100.c  (test for warnings, line 26)
    +PASS: gcc.dg/uninit-pr93100.c  (test for warnings, line 38)
    +PASS: gcc.dg/uninit-pr93100.c  (test for warnings, line 48)
    +PASS: gcc.dg/uninit-pr93100.c  (test for warnings, line 61)
    +PASS: gcc.dg/uninit-pr93100.c  (test for warnings, line 71)
    +PASS: gcc.dg/uninit-pr93100.c (test for excess errors)

    -UNSUPPORTED: g++.dg/warn/uninit-pr93100.C  -std=gnu++20
    +PASS: g++.dg/warn/uninit-pr93100.C  -std=gnu++20  (test for warnings, line 13)
    +PASS: g++.dg/warn/uninit-pr93100.C  -std=gnu++20  (test for warnings, line 20)
    +PASS: g++.dg/warn/uninit-pr93100.C  -std=gnu++20  (test for warnings, line 31)
    +PASS: g++.dg/warn/uninit-pr93100.C  -std=gnu++20  (test for warnings, line 38)
    +PASS: g++.dg/warn/uninit-pr93100.C  -std=gnu++20  (test for warnings, line 49)
    +PASS: g++.dg/warn/uninit-pr93100.C  -std=gnu++20  (test for warnings, line 56)
    +PASS: g++.dg/warn/uninit-pr93100.C  -std=gnu++20 (test for excess errors)
    [Etc.]

    -UNSUPPORTED: g++.dg/warn/uninit-pr95825-1.C  -std=gnu++20
    +PASS: g++.dg/warn/uninit-pr95825-1.C  -std=gnu++20  (test for bogus messages, line 17)
    +PASS: g++.dg/warn/uninit-pr95825-1.C  -std=gnu++20 (test for excess errors)
    [Etc.]

    -UNSUPPORTED: gnat.dg/asan1.adb
    +PASS: gnat.dg/asan1.adb (test for excess errors)

..., while these remain UNSUPPORTED for targets that don't support
'-fsanitize=address'.

	gcc/testsuite/
	* lib/target-supports.exp
	(check_effective_target_no_fsanitize_address): Check 'assembly'
	instead of 'executable'.
2026-02-19 12:53:39 +01:00
Jakub Jelinek
b81b21e6e4 c++: Clarify convert_nontype_argument return value in function comment
If tf_error is not set in COMPLAIN, whether NULL_TREE or error_mark_node
is returned doesn't matter.

2026-02-19  Jakub Jelinek  <jakub@redhat.com>

	* pt.cc (convert_nontype_argument): Clarify return value in function
	comment.
2026-02-19 12:32:24 +01:00
Thomas Schwinge
6ab26dfe7a cprop_hardreg: Use delete_insn_and_edges instead of delete_insn: gcc.dg/pr116053-1.c does 'dg-require-effective-target int128' [PR116053]
Small fix-up for commit r16-7574-g6f777c34c9f221a50d0fc22b70b1cf7dd1fd9101
"cprop_hardreg: Use delete_insn_and_edges instead of delete_insn [PR116053]",
where for certain GCC targets, we see:

    [...]gcc/testsuite/gcc.dg/pr116053-1.c:8:6: error: expected declaration specifiers or '...' before '__int128'

	PR rtl-optimization/116053
	gcc/testsuite/
	* gcc.dg/pr116053-1.c: 'dg-require-effective-target int128'.
2026-02-19 12:17:51 +01:00
Avinash Jayakar
120d00d652 vect: Fix target conditions in pr104116 test cases [PR123195]
A missing space in the target conditions of the test cases for PR104116,
caused the tests to run on platforms where it was not intended to.

This patch adds those spaces to the conditions.

2026-02-19  Avinash Jayakar  <avinashd@linux.ibm.com>

gcc/testsuite/ChangeLog:
	PR target/123195
	* gcc.dg/vect/pr104116-ceil-div-2.c: Add space.
	* gcc.dg/vect/pr104116-ceil-div-pow2.c: Likewise.
	* gcc.dg/vect/pr104116-ceil-div.c: Likewise.
	* gcc.dg/vect/pr104116-ceil-mod-2.c: Likewise.
	* gcc.dg/vect/pr104116-ceil-mod-pow2.c: Likewise.
	* gcc.dg/vect/pr104116-ceil-mod.c: Likewise.
	* gcc.dg/vect/pr104116-ceil-udiv-2.c: Likewise.
	* gcc.dg/vect/pr104116-ceil-udiv-pow2.c: Likewise.
	* gcc.dg/vect/pr104116-ceil-udiv.c: Likewise.
	* gcc.dg/vect/pr104116-ceil-umod-2.c: Likewise.
	* gcc.dg/vect/pr104116-ceil-umod-pow2.c: Likewise.
	* gcc.dg/vect/pr104116-ceil-umod.c: Likewise.
	* gcc.dg/vect/pr104116-floor-div-2.c: Likewise.
	* gcc.dg/vect/pr104116-floor-div-pow2.c: Likewise.
	* gcc.dg/vect/pr104116-floor-div.c: Likewise.
	* gcc.dg/vect/pr104116-floor-mod-2.c: Likewise.
	* gcc.dg/vect/pr104116-floor-mod-pow2.c: Likewise.
	* gcc.dg/vect/pr104116-floor-mod.c: Likewise.
	* gcc.dg/vect/pr104116-round-div-2.c: Likewise.
	* gcc.dg/vect/pr104116-round-div-pow2.c: Likewise.
	* gcc.dg/vect/pr104116-round-div.c: Likewise.
	* gcc.dg/vect/pr104116-round-mod-2.c: Likewise.
	* gcc.dg/vect/pr104116-round-mod-pow2.c: Likewise.
	* gcc.dg/vect/pr104116-round-mod.c: Likewise.
	* gcc.dg/vect/pr104116-round-udiv-2.c: Likewise.
	* gcc.dg/vect/pr104116-round-udiv-pow2.c: Likewise.
	* gcc.dg/vect/pr104116-round-udiv.c: Likewise.
	* gcc.dg/vect/pr104116-round-umod-2.c: Likewise.
	* gcc.dg/vect/pr104116-round-umod-pow2.c: Likewise.
	* gcc.dg/vect/pr104116-round-umod.c: Likewise.
2026-02-19 14:03:42 +05:30
Filip Kastl
454c829515 contrib/filter-clang-warnings.py: Ignore all .texi
Compiling GCC with Clang doesn't only yield Clang's warnings but also
warnings about .texi documentation files.  In filter-clang-warnings.py
we blacklisted some .texi files.  Blacklist all of them.

contrib/ChangeLog:

	* filter-clang-warnings.py: Filter out all warnings comming from
	files with ".texi" in their name.

Signed-off-by: Filip Kastl <fkastl@suse.cz>
2026-02-19 09:07:03 +01:00
58 changed files with 642 additions and 618 deletions

View File

@@ -73,13 +73,12 @@ def skip_warning(filename, message):
# Rust peopel promised to clean these warnings too
'rust/': ['-Wunused-private-field'],
'libiberty/sha1.c': ['-Wc23-extensions'],
'avr-mmcu.texi': [''],
'gfortran.texi': [''],
'install.texi': [''],
'libgccjit.texi': [''],
'libtool': ['']
}
if ".texi" in filename:
return True
for name, ignore in ignores.items():
for i in ignore:
if name in filename and i in message:

View File

@@ -264,6 +264,10 @@ enum {
METAFN_KIND_MASK = (1 << METAFN_KIND_SHIFT) - 1
};
/* Get the metafn_kind_arg for argument ARGNO. */
#define METAFN_KIND_ARG(ARGNO) \
((minfo->kind >> ((ARGNO + 1) * METAFN_KIND_SHIFT)) & METAFN_KIND_MASK)
/* Possible return types of metafunctions. */
enum metafn_kind_ret {
METAFN_KIND_RET_BOOL,

View File

@@ -292,6 +292,10 @@ enum {
METAFN_KIND_MASK = (1 << METAFN_KIND_SHIFT) - 1
};
/* Get the metafn_kind_arg for argument ARGNO. */
#define METAFN_KIND_ARG(ARGNO) \
((minfo->kind >> ((ARGNO + 1) * METAFN_KIND_SHIFT)) & METAFN_KIND_MASK)
/* Possible return types of metafunctions. */
enum metafn_kind_ret {
METAFN_KIND_RET_BOOL,
@@ -468,7 +472,7 @@ enum metafn_kind {
= (METAFN_KIND_ARGS_INPUT_RANGE << METAFN_KIND_SHIFT)
| METAFN_KIND_RET_U8STRING_VIEW
};
#line 444 "metafns.gperf"
#line 448 "metafns.gperf"
struct metafn_info
{
/* A name within "std::meta::" (or "std::meta::access_context::"). */
@@ -592,473 +596,473 @@ metafn_lookup::find (const char *str, size_t len)
#endif
static const struct metafn_info wordlist[] =
{
#line 644 "metafns.gperf"
{"rank", METAFN_RANK, METAFN_KIND_SIZE_T_TINFO,},
#line 574 "metafns.gperf"
{"is_void_type", METAFN_IS_VOID_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 579 "metafns.gperf"
{"is_pointer_type", METAFN_IS_POINTER_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 485 "metafns.gperf"
{"is_volatile", METAFN_IS_VOLATILE, METAFN_KIND_BOOL_INFO,},
#line 531 "metafns.gperf"
{"is_value", METAFN_IS_VALUE, METAFN_KIND_BOOL_INFO,},
#line 538 "metafns.gperf"
{"is_base", METAFN_IS_BASE, METAFN_KIND_BOOL_INFO,},
#line 499 "metafns.gperf"
{"is_variable", METAFN_IS_VARIABLE, METAFN_KIND_BOOL_INFO,},
#line 650 "metafns.gperf"
{"is_nothrow_convertible_type", METAFN_IS_NOTHROW_CONVERTIBLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
#line 629 "metafns.gperf"
{"is_nothrow_constructible_type", METAFN_IS_NOTHROW_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET,},
#line 655 "metafns.gperf"
{"is_nothrow_invocable_type", METAFN_IS_NOTHROW_INVOCABLE_TYPE, METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET,},
#line 634 "metafns.gperf"
{"is_nothrow_copy_assignable_type", METAFN_IS_NOTHROW_COPY_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 656 "metafns.gperf"
{"is_nothrow_invocable_r_type", METAFN_IS_NOTHROW_INVOCABLE_R_TYPE, METAFN_KIND_BOOL_TINFO_TINFO_REFLECTION_RANGET,},
#line 631 "metafns.gperf"
{"is_nothrow_copy_constructible_type", METAFN_IS_NOTHROW_COPY_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 647 "metafns.gperf"
{"is_base_of_type", METAFN_IS_BASE_OF_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
#line 635 "metafns.gperf"
{"is_nothrow_move_assignable_type", METAFN_IS_NOTHROW_MOVE_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 632 "metafns.gperf"
{"is_nothrow_move_constructible_type", METAFN_IS_NOTHROW_MOVE_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 523 "metafns.gperf"
{"is_variable_template", METAFN_IS_VARIABLE_TEMPLATE, METAFN_KIND_BOOL_INFO,},
#line 682 "metafns.gperf"
{"variant_size", METAFN_VARIANT_SIZE, METAFN_KIND_SIZE_T_TINFO,},
#line 575 "metafns.gperf"
{"is_null_pointer_type", METAFN_IS_NULL_POINTER_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 500 "metafns.gperf"
{"is_type", METAFN_IS_TYPE, METAFN_KIND_BOOL_INFO,},
#line 468 "metafns.gperf"
{"is_public", METAFN_IS_PUBLIC, METAFN_KIND_BOOL_INFO,},
#line 480 "metafns.gperf"
{"is_noexcept", METAFN_IS_NOEXCEPT, METAFN_KIND_BOOL_INFO,},
#line 563 "metafns.gperf"
{"extract", METAFN_EXTRACT, METAFN_KIND_TEMPLATE_PARM_INFO,},
#line 683 "metafns.gperf"
{"variant_alternative", METAFN_VARIANT_ALTERNATIVE, METAFN_KIND_INFO_SIZE_T_TINFO,},
#line 601 "metafns.gperf"
{"is_polymorphic_type", METAFN_IS_POLYMORPHIC_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 470 "metafns.gperf"
{"is_private", METAFN_IS_PRIVATE, METAFN_KIND_BOOL_INFO,},
#line 504 "metafns.gperf"
{"is_function", METAFN_IS_FUNCTION, METAFN_KIND_BOOL_INFO,},
#line 501 "metafns.gperf"
{"is_namespace", METAFN_IS_NAMESPACE, METAFN_KIND_BOOL_INFO,},
#line 652 "metafns.gperf"
{"is_pointer_interconvertible_base_of_type", METAFN_IS_POINTER_INTERCONVERTIBLE_BASE_OF_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
#line 608 "metafns.gperf"
{"is_bounded_array_type", METAFN_IS_BOUNDED_ARRAY_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 484 "metafns.gperf"
{"is_const", METAFN_IS_CONST, METAFN_KIND_BOOL_INFO,},
#line 530 "metafns.gperf"
{"is_concept", METAFN_IS_CONCEPT, METAFN_KIND_BOOL_INFO,},
#line 646 "metafns.gperf"
{"is_same_type", METAFN_IS_SAME_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
#line 554 "metafns.gperf"
{"bases_of", METAFN_BASES_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,},
#line 493 "metafns.gperf"
{"has_module_linkage", METAFN_HAS_MODULE_LINKAGE, METAFN_KIND_BOOL_INFO,},
#line 522 "metafns.gperf"
{"is_function_template", METAFN_IS_FUNCTION_TEMPLATE, METAFN_KIND_BOOL_INFO,},
#line 633 "metafns.gperf"
{"is_nothrow_assignable_type", METAFN_IS_NOTHROW_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
#line 505 "metafns.gperf"
{"is_conversion_function", METAFN_IS_CONVERSION_FUNCTION, METAFN_KIND_BOOL_INFO,},
#line 638 "metafns.gperf"
{"is_nothrow_destructible_type", METAFN_IS_NOTHROW_DESTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 649 "metafns.gperf"
{"is_convertible_type", METAFN_IS_CONVERTIBLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
#line 639 "metafns.gperf"
{"is_implicit_lifetime_type", METAFN_IS_IMPLICIT_LIFETIME_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 521 "metafns.gperf"
{"is_template", METAFN_IS_TEMPLATE, METAFN_KIND_BOOL_INFO,},
#line 630 "metafns.gperf"
{"is_nothrow_default_constructible_type", METAFN_IS_NOTHROW_DEFAULT_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 564 "metafns.gperf"
{"can_substitute", METAFN_CAN_SUBSTITUTE, METAFN_KIND_INFO_INFO_REFLECTION_RANGE,},
#line 526 "metafns.gperf"
{"is_conversion_function_template", METAFN_IS_CONVERSION_FUNCTION_TEMPLATE, METAFN_KIND_BOOL_INFO,},
#line 457 "metafns.gperf"
{"symbol_of", METAFN_SYMBOL_OF, METAFN_KIND_STRING_VIEW_OPERATORS,},
#line 613 "metafns.gperf"
{"is_copy_constructible_type", METAFN_IS_COPY_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 611 "metafns.gperf"
{"is_constructible_type", METAFN_IS_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET,},
#line 491 "metafns.gperf"
{"has_automatic_storage_duration", METAFN_HAS_AUTOMATIC_STORAGE_DURATION, METAFN_KIND_BOOL_INFO,},
#line 616 "metafns.gperf"
{"is_copy_assignable_type", METAFN_IS_COPY_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 680 "metafns.gperf"
{"tuple_size", METAFN_TUPLE_SIZE, METAFN_KIND_SIZE_T_TINFO,},
#line 502 "metafns.gperf"
{"is_type_alias", METAFN_IS_TYPE_ALIAS, METAFN_KIND_BOOL_INFO,},
#line 511 "metafns.gperf"
{"is_copy_constructor", METAFN_IS_COPY_CONSTRUCTOR, METAFN_KIND_BOOL_INFO,},
#line 547 "metafns.gperf"
{"variable_of", METAFN_VARIABLE_OF, METAFN_KIND_INFO_INFO,},
#line 540 "metafns.gperf"
{"has_parent", METAFN_HAS_PARENT, METAFN_KIND_BOOL_INFO,},
#line 588 "metafns.gperf"
{"is_reflection_type", METAFN_IS_REFLECTION_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 591 "metafns.gperf"
{"is_fundamental_type", METAFN_IS_FUNDAMENTAL_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 651 "metafns.gperf"
{"is_layout_compatible_type", METAFN_IS_LAYOUT_COMPATIBLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
#line 562 "metafns.gperf"
{"bit_size_of", METAFN_BIT_SIZE_OF, METAFN_KIND_SIZE_T_INFO,},
#line 514 "metafns.gperf"
{"is_copy_assignment", METAFN_IS_COPY_ASSIGNMENT, METAFN_KIND_BOOL_INFO,},
#line 687 "metafns.gperf"
{"current", METAFN_ACCESS_CONTEXT_CURRENT, METAFN_KIND_ACCESS_CONTEXT_VOID,},
#line 674 "metafns.gperf"
{"common_type", METAFN_COMMON_TYPE, METAFN_KIND_INFO_REFLECTION_RANGET,},
#line 529 "metafns.gperf"
{"is_constructor_template", METAFN_IS_CONSTRUCTOR_TEMPLATE, METAFN_KIND_BOOL_INFO,},
#line 684 "metafns.gperf"
{"type_order", METAFN_TYPE_ORDER, METAFN_KIND_STRONG_ORDERING_TINFO_TINFO,},
#line 675 "metafns.gperf"
{"common_reference", METAFN_COMMON_REFERENCE, METAFN_KIND_INFO_REFLECTION_RANGET,},
#line 539 "metafns.gperf"
{"has_default_member_initializer", METAFN_HAS_DEFAULT_MEMBER_INITIALIZER, METAFN_KIND_BOOL_INFO,},
#line 681 "metafns.gperf"
{"tuple_element", METAFN_TUPLE_ELEMENT, METAFN_KIND_INFO_SIZE_T_TINFO,},
#line 568 "metafns.gperf"
{"reflect_function", METAFN_REFLECT_FUNCTION, METAFN_KIND_INFO_TEMPLATE_PARM_REF,},
#line 519 "metafns.gperf"
{"has_default_argument", METAFN_HAS_DEFAULT_ARGUMENT, METAFN_KIND_BOOL_INFO,},
#line 614 "metafns.gperf"
{"is_move_constructible_type", METAFN_IS_MOVE_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 465 "metafns.gperf"
{"type_of", METAFN_TYPE_OF, METAFN_KIND_INFO_INFO,},
#line 509 "metafns.gperf"
{"is_constructor", METAFN_IS_CONSTRUCTOR, METAFN_KIND_BOOL_INFO,},
#line 619 "metafns.gperf"
{"is_swappable_type", METAFN_IS_SWAPPABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 637 "metafns.gperf"
{"is_nothrow_swappable_type", METAFN_IS_NOTHROW_SWAPPABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 589 "metafns.gperf"
{"is_reference_type", METAFN_IS_REFERENCE_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 496 "metafns.gperf"
{"has_linkage", METAFN_HAS_LINKAGE, METAFN_KIND_BOOL_INFO,},
#line 636 "metafns.gperf"
{"is_nothrow_swappable_with_type", METAFN_IS_NOTHROW_SWAPPABLE_WITH_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
#line 595 "metafns.gperf"
{"is_member_pointer_type", METAFN_IS_MEMBER_POINTER_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 617 "metafns.gperf"
{"is_move_assignable_type", METAFN_IS_MOVE_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 520 "metafns.gperf"
{"has_ellipsis_parameter", METAFN_HAS_ELLIPSIS_PARAMETER, METAFN_KIND_BOOL_INFO,},
#line 512 "metafns.gperf"
{"is_move_constructor", METAFN_IS_MOVE_CONSTRUCTOR, METAFN_KIND_BOOL_INFO,},
#line 546 "metafns.gperf"
{"parameters_of", METAFN_PARAMETERS_OF, METAFN_KIND_VECTOR_INFO_INFO,},
#line 560 "metafns.gperf"
{"size_of", METAFN_SIZE_OF, METAFN_KIND_SIZE_T_INFO,},
#line 515 "metafns.gperf"
{"is_move_assignment", METAFN_IS_MOVE_ASSIGNMENT, METAFN_KIND_BOOL_INFO,},
#line 615 "metafns.gperf"
{"is_assignable_type", METAFN_IS_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
#line 534 "metafns.gperf"
{"is_class_member", METAFN_IS_CLASS_MEMBER, METAFN_KIND_BOOL_INFO,},
#line 598 "metafns.gperf"
{"is_trivially_copyable_type", METAFN_IS_TRIVIALLY_COPYABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 513 "metafns.gperf"
{"is_assignment", METAFN_IS_ASSIGNMENT, METAFN_KIND_BOOL_INFO,},
#line 535 "metafns.gperf"
{"is_namespace_member", METAFN_IS_NAMESPACE_MEMBER, METAFN_KIND_BOOL_INFO,},
#line 553 "metafns.gperf"
{"members_of", METAFN_MEMBERS_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,},
#line 621 "metafns.gperf"
{"is_trivially_constructible_type", METAFN_IS_TRIVIALLY_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET,},
#line 626 "metafns.gperf"
{"is_trivially_copy_assignable_type", METAFN_IS_TRIVIALLY_COPY_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 623 "metafns.gperf"
{"is_trivially_copy_constructible_type", METAFN_IS_TRIVIALLY_COPY_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 645 "metafns.gperf"
{"extent", METAFN_EXTENT, METAFN_KIND_SIZE_T_TINFO_UNSIGNED,},
#line 584 "metafns.gperf"
{"is_enum_type", METAFN_IS_ENUM_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 544 "metafns.gperf"
{"template_of", METAFN_TEMPLATE_OF, METAFN_KIND_INFO_INFO,},
#line 524 "metafns.gperf"
{"is_class_template", METAFN_IS_CLASS_TEMPLATE, METAFN_KIND_BOOL_INFO,},
#line 508 "metafns.gperf"
{"is_special_member_function", METAFN_IS_SPECIAL_MEMBER_FUNCTION, METAFN_KIND_BOOL_INFO,},
#line 469 "metafns.gperf"
{"is_protected", METAFN_IS_PROTECTED, METAFN_KIND_BOOL_INFO,},
#line 536 "metafns.gperf"
{"is_nonstatic_data_member", METAFN_IS_NONSTATIC_DATA_MEMBER, METAFN_KIND_BOOL_INFO,},
#line 678 "metafns.gperf"
{"unwrap_reference", METAFN_UNWRAP_REFERENCE, METAFN_KIND_INFO_TINFO,},
#line 498 "metafns.gperf"
{"is_enumerable_type", METAFN_IS_ENUMERABLE_TYPE, METAFN_KIND_BOOL_INFO,},
#line 590 "metafns.gperf"
{"is_arithmetic_type", METAFN_IS_ARITHMETIC_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 541 "metafns.gperf"
{"parent_of", METAFN_PARENT_OF, METAFN_KIND_INFO_INFO,},
#line 472 "metafns.gperf"
{"is_pure_virtual", METAFN_IS_PURE_VIRTUAL, METAFN_KIND_BOOL_INFO,},
#line 671 "metafns.gperf"
{"add_pointer", METAFN_ADD_POINTER, METAFN_KIND_INFO_TINFO,},
#line 612 "metafns.gperf"
{"is_default_constructible_type", METAFN_IS_DEFAULT_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 676 "metafns.gperf"
{"underlying_type", METAFN_UNDERLYING_TYPE, METAFN_KIND_INFO_TINFO,},
#line 517 "metafns.gperf"
{"is_function_parameter", METAFN_IS_FUNCTION_PARAMETER, METAFN_KIND_BOOL_INFO,},
#line 460 "metafns.gperf"
{"identifier_of", METAFN_IDENTIFIER_OF, METAFN_KIND_STRING_VIEW_INFO,},
#line 593 "metafns.gperf"
{"is_scalar_type", METAFN_IS_SCALAR_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 665 "metafns.gperf"
{"add_rvalue_reference", METAFN_ADD_RVALUE_REFERENCE, METAFN_KIND_INFO_TINFO,},
#line 486 "metafns.gperf"
{"is_mutable_member", METAFN_IS_MUTABLE_MEMBER, METAFN_KIND_BOOL_INFO,},
#line 503 "metafns.gperf"
{"is_namespace_alias", METAFN_IS_NAMESPACE_ALIAS, METAFN_KIND_BOOL_INFO,},
#line 627 "metafns.gperf"
{"is_trivially_move_assignable_type", METAFN_IS_TRIVIALLY_MOVE_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 624 "metafns.gperf"
{"is_trivially_move_constructible_type", METAFN_IS_TRIVIALLY_MOVE_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 510 "metafns.gperf"
{"is_default_constructor", METAFN_IS_DEFAULT_CONSTRUCTOR, METAFN_KIND_BOOL_INFO,},
#line 482 "metafns.gperf"
{"is_enumerator", METAFN_IS_ENUMERATOR, METAFN_KIND_BOOL_INFO,},
#line 532 "metafns.gperf"
{"is_object", METAFN_IS_OBJECT, METAFN_KIND_BOOL_INFO,},
#line 604 "metafns.gperf"
{"is_aggregate_type", METAFN_IS_AGGREGATE_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 516 "metafns.gperf"
{"is_destructor", METAFN_IS_DESTRUCTOR, METAFN_KIND_BOOL_INFO,},
#line 583 "metafns.gperf"
{"is_member_function_pointer_type", METAFN_IS_MEMBER_FUNCTION_POINTER_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 592 "metafns.gperf"
{"is_object_type", METAFN_IS_OBJECT_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 565 "metafns.gperf"
{"substitute", METAFN_SUBSTITUTE, METAFN_KIND_INFO_INFO_REFLECTION_RANGE,},
#line 581 "metafns.gperf"
{"is_rvalue_reference_type", METAFN_IS_RVALUE_REFERENCE_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 662 "metafns.gperf"
{"add_cv", METAFN_ADD_CV, METAFN_KIND_INFO_TINFO,},
#line 566 "metafns.gperf"
{"reflect_constant", METAFN_REFLECT_CONSTANT, METAFN_KIND_INFO_TEMPLATE_PARM,},
#line 625 "metafns.gperf"
{"is_trivially_assignable_type", METAFN_IS_TRIVIALLY_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
#line 471 "metafns.gperf"
{"is_virtual", METAFN_IS_VIRTUAL, METAFN_KIND_BOOL_INFO,},
#line 489 "metafns.gperf"
{"has_static_storage_duration", METAFN_HAS_STATIC_STORAGE_DURATION, METAFN_KIND_BOOL_INFO,},
#line 664 "metafns.gperf"
{"add_lvalue_reference", METAFN_ADD_LVALUE_REFERENCE, METAFN_KIND_INFO_TINFO,},
#line 580 "metafns.gperf"
{"is_lvalue_reference_type", METAFN_IS_LVALUE_REFERENCE_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 558 "metafns.gperf"
{"enumerators_of", METAFN_ENUMERATORS_OF, METAFN_KIND_VECTOR_INFO_INFO,},
#line 620 "metafns.gperf"
{"is_destructible_type", METAFN_IS_DESTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 545 "metafns.gperf"
{"template_arguments_of", METAFN_TEMPLATE_ARGUMENTS_OF, METAFN_KIND_VECTOR_INFO_INFO,},
#line 653 "metafns.gperf"
{"is_invocable_type", METAFN_IS_INVOCABLE_TYPE, METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET,},
#line 660 "metafns.gperf"
{"add_const", METAFN_ADD_CONST, METAFN_KIND_INFO_TINFO,},
#line 525 "metafns.gperf"
{"is_alias_template", METAFN_IS_ALIAS_TEMPLATE, METAFN_KIND_BOOL_INFO,},
#line 600 "metafns.gperf"
{"is_empty_type", METAFN_IS_EMPTY_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 628 "metafns.gperf"
{"is_trivially_destructible_type", METAFN_IS_TRIVIALLY_DESTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 494 "metafns.gperf"
{"has_external_linkage", METAFN_HAS_EXTERNAL_LINKAGE, METAFN_KIND_BOOL_INFO,},
#line 549 "metafns.gperf"
{"is_accessible", METAFN_IS_ACCESSIBLE, METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,},
#line 654 "metafns.gperf"
{"is_invocable_r_type", METAFN_IS_INVOCABLE_R_TYPE, METAFN_KIND_BOOL_TINFO_TINFO_REFLECTION_RANGET,},
#line 648 "metafns.gperf"
{"is_virtual_base_of_type", METAFN_IS_VIRTUAL_BASE_OF_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
#line 597 "metafns.gperf"
{"is_volatile_type", METAFN_IS_VOLATILE_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 569 "metafns.gperf"
{"reflect_constant_string", METAFN_REFLECT_CONSTANT_STRING, METAFN_KIND_INFO_INPUT_RANGE,},
#line 622 "metafns.gperf"
{"is_trivially_default_constructible_type", METAFN_IS_TRIVIALLY_DEFAULT_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 528 "metafns.gperf"
{"is_literal_operator_template", METAFN_IS_LITERAL_OPERATOR_TEMPLATE, METAFN_KIND_BOOL_INFO,},
#line 456 "metafns.gperf"
{"operator_of", METAFN_OPERATOR_OF, METAFN_KIND_OPERATORS_INFO,},
#line 606 "metafns.gperf"
{"is_signed_type", METAFN_IS_SIGNED_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 610 "metafns.gperf"
{"is_scoped_enum_type", METAFN_IS_SCOPED_ENUM_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 618 "metafns.gperf"
{"is_swappable_with_type", METAFN_IS_SWAPPABLE_WITH_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
#line 557 "metafns.gperf"
{"subobjects_of", METAFN_SUBOBJECTS_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,},
#line 559 "metafns.gperf"
{"offset_of", METAFN_OFFSET_OF, METAFN_KIND_MEMBER_OFFSET_INFO,},
#line 533 "metafns.gperf"
{"is_structured_binding", METAFN_IS_STRUCTURED_BINDING, METAFN_KIND_BOOL_INFO,},
#line 474 "metafns.gperf"
{"is_final", METAFN_IS_FINAL, METAFN_KIND_BOOL_INFO,},
#line 507 "metafns.gperf"
{"is_literal_operator", METAFN_IS_LITERAL_OPERATOR, METAFN_KIND_BOOL_INFO,},
#line 667 "metafns.gperf"
{"make_unsigned", METAFN_MAKE_UNSIGNED, METAFN_KIND_INFO_TINFO,},
#line 463 "metafns.gperf"
{"u8display_string_of", METAFN_U8DISPLAY_STRING_OF, METAFN_KIND_U8STRING_VIEW_INFO,},
#line 640 "metafns.gperf"
{"has_virtual_destructor", METAFN_HAS_VIRTUAL_DESTRUCTOR, METAFN_KIND_BOOL_TINFO,},
#line 596 "metafns.gperf"
{"is_const_type", METAFN_IS_CONST_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 479 "metafns.gperf"
{"is_explicit", METAFN_IS_EXPLICIT, METAFN_KIND_BOOL_INFO,},
#line 572 "metafns.gperf"
{"is_data_member_spec", METAFN_IS_DATA_MEMBER_SPEC, METAFN_KIND_BOOL_INFO,},
#line 497 "metafns.gperf"
{"is_complete_type", METAFN_IS_COMPLETE_TYPE, METAFN_KIND_BOOL_INFO,},
#line 483 "metafns.gperf"
{"is_annotation", METAFN_IS_ANNOTATION, METAFN_KIND_BOOL_INFO,},
#line 587 "metafns.gperf"
{"is_function_type", METAFN_IS_FUNCTION_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 548 "metafns.gperf"
{"return_type_of", METAFN_RETURN_TYPE_OF, METAFN_KIND_INFO_INFO,},
#line 475 "metafns.gperf"
{"is_deleted", METAFN_IS_DELETED, METAFN_KIND_BOOL_INFO,},
#line 467 "metafns.gperf"
{"constant_of", METAFN_CONSTANT_OF, METAFN_KIND_INFO_INFO,},
#line 661 "metafns.gperf"
{"add_volatile", METAFN_ADD_VOLATILE, METAFN_KIND_INFO_TINFO,},
#line 476 "metafns.gperf"
{"is_defaulted", METAFN_IS_DEFAULTED, METAFN_KIND_BOOL_INFO,},
#line 641 "metafns.gperf"
{"has_unique_object_representations", METAFN_HAS_UNIQUE_OBJECT_REPRESENTATIONS, METAFN_KIND_BOOL_TINFO,},
#line 582 "metafns.gperf"
{"is_member_object_pointer_type", METAFN_IS_MEMBER_OBJECT_POINTER_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 462 "metafns.gperf"
{"display_string_of", METAFN_DISPLAY_STRING_OF, METAFN_KIND_STRING_VIEW_INFO,},
#line 518 "metafns.gperf"
{"is_explicit_object_parameter", METAFN_IS_EXPLICIT_OBJECT_PARAMETER, METAFN_KIND_BOOL_INFO,},
#line 537 "metafns.gperf"
{"is_static_member", METAFN_IS_STATIC_MEMBER, METAFN_KIND_BOOL_INFO,},
#line 466 "metafns.gperf"
{"object_of", METAFN_OBJECT_OF, METAFN_KIND_INFO_INFO,},
#line 605 "metafns.gperf"
{"is_consteval_only_type", METAFN_IS_CONSTEVAL_ONLY_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 473 "metafns.gperf"
{"is_override", METAFN_IS_OVERRIDE, METAFN_KIND_BOOL_INFO,},
#line 659 "metafns.gperf"
{"remove_cv", METAFN_REMOVE_CV, METAFN_KIND_INFO_TINFO,},
#line 567 "metafns.gperf"
{"reflect_object", METAFN_REFLECT_OBJECT, METAFN_KIND_INFO_TEMPLATE_PARM_REF,},
#line 577 "metafns.gperf"
{"is_floating_point_type", METAFN_IS_FLOATING_POINT_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 459 "metafns.gperf"
{"has_identifier", METAFN_HAS_IDENTIFIER, METAFN_KIND_BOOL_INFO,},
#line 663 "metafns.gperf"
{"remove_reference", METAFN_REMOVE_REFERENCE, METAFN_KIND_INFO_TINFO,},
#line 551 "metafns.gperf"
{"has_inaccessible_bases", METAFN_HAS_INACCESSIBLE_BASES, METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,},
#line 495 "metafns.gperf"
{"has_c_language_linkage", METAFN_HAS_C_LANGUAGE_LINKAGE, METAFN_KIND_BOOL_INFO,},
#line 552 "metafns.gperf"
{"has_inaccessible_subobjects", METAFN_HAS_INACCESSIBLE_SUBOBJECTS, METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,},
#line 668 "metafns.gperf"
{"remove_extent", METAFN_REMOVE_EXTENT, METAFN_KIND_INFO_TINFO,},
#line 550 "metafns.gperf"
{"has_inaccessible_nonstatic_data_members", METAFN_HAS_INACCESSIBLE_NONSTATIC_DATA_MEMBERS, METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,},
#line 488 "metafns.gperf"
{"is_rvalue_reference_qualified", METAFN_IS_RVALUE_REFERENCE_QUALIFIED, METAFN_KIND_BOOL_INFO,},
#line 643 "metafns.gperf"
{"reference_converts_from_temporary", METAFN_REFERENCE_CONVERTS_FROM_TEMPORARY, METAFN_KIND_BOOL_TINFO_TINFO,},
#line 586 "metafns.gperf"
{"is_class_type", METAFN_IS_CLASS_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 478 "metafns.gperf"
{"is_user_declared", METAFN_IS_USER_DECLARED, METAFN_KIND_BOOL_INFO,},
#line 571 "metafns.gperf"
{"data_member_spec", METAFN_DATA_MEMBER_SPEC, METAFN_KIND_INFO_TINFO_DATA_MEMBER_OPTIONS,},
#line 487 "metafns.gperf"
{"is_lvalue_reference_qualified", METAFN_IS_LVALUE_REFERENCE_QUALIFIED, METAFN_KIND_BOOL_INFO,},
#line 490 "metafns.gperf"
{"has_thread_storage_duration", METAFN_HAS_THREAD_STORAGE_DURATION, METAFN_KIND_BOOL_INFO,},
#line 481 "metafns.gperf"
{"is_bit_field", METAFN_IS_BIT_FIELD, METAFN_KIND_BOOL_INFO,},
#line 672 "metafns.gperf"
{"remove_cvref", METAFN_REMOVE_CVREF, METAFN_KIND_INFO_TINFO,},
#line 677 "metafns.gperf"
{"invoke_result", METAFN_INVOKE_RESULT, METAFN_KIND_INFO_TINFO_REFLECTION_RANGET,},
#line 543 "metafns.gperf"
{"has_template_arguments", METAFN_HAS_TEMPLATE_ARGUMENTS, METAFN_KIND_BOOL_INFO,},
#line 506 "metafns.gperf"
{"is_operator_function", METAFN_IS_OPERATOR_FUNCTION, METAFN_KIND_BOOL_INFO,},
#line 670 "metafns.gperf"
{"remove_pointer", METAFN_REMOVE_POINTER, METAFN_KIND_INFO_TINFO,},
#line 542 "metafns.gperf"
{"dealias", METAFN_DEALIAS, METAFN_KIND_INFO_INFO,},
#line 657 "metafns.gperf"
{"remove_const", METAFN_REMOVE_CONST, METAFN_KIND_INFO_TINFO,},
#line 527 "metafns.gperf"
{"is_operator_function_template", METAFN_IS_OPERATOR_FUNCTION_TEMPLATE, METAFN_KIND_BOOL_INFO,},
#line 642 "metafns.gperf"
{"reference_constructs_from_temporary", METAFN_REFERENCE_CONSTRUCTS_FROM_TEMPORARY, METAFN_KIND_BOOL_TINFO_TINFO,},
#line 669 "metafns.gperf"
{"remove_all_extents", METAFN_REMOVE_ALL_EXTENTS, METAFN_KIND_INFO_TINFO,},
{"rank", METAFN_RANK, METAFN_KIND_SIZE_T_TINFO,},
#line 578 "metafns.gperf"
{"is_array_type", METAFN_IS_ARRAY_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 492 "metafns.gperf"
{"has_internal_linkage", METAFN_HAS_INTERNAL_LINKAGE, METAFN_KIND_BOOL_INFO,},
#line 666 "metafns.gperf"
{"make_signed", METAFN_MAKE_SIGNED, METAFN_KIND_INFO_TINFO,},
#line 555 "metafns.gperf"
{"static_data_members_of", METAFN_STATIC_DATA_MEMBERS_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,},
#line 594 "metafns.gperf"
{"is_compound_type", METAFN_IS_COMPOUND_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 602 "metafns.gperf"
{"is_abstract_type", METAFN_IS_ABSTRACT_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 573 "metafns.gperf"
{"define_aggregate", METAFN_DEFINE_AGGREGATE, METAFN_KIND_INFO_INFO_REFLECTION_RANGE,},
#line 688 "metafns.gperf"
{"_S_exception_cvt_to_utf8", METAFN_EXCEPTION__S_EXCEPTION_CVT_TO_UTF8, METAFN_KIND_U8STRING_VIEW_INPUT_RANGE,},
#line 689 "metafns.gperf"
{"_S_exception_cvt_from_utf8", METAFN_EXCEPTION__S_EXCEPTION_CVT_FROM_UTF8, METAFN_KIND_STRING_VIEW_INPUT_RANGE,},
#line 609 "metafns.gperf"
{"is_unbounded_array_type", METAFN_IS_UNBOUNDED_ARRAY_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 599 "metafns.gperf"
{"is_standard_layout_type", METAFN_IS_STANDARD_LAYOUT_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 679 "metafns.gperf"
{"unwrap_ref_decay", METAFN_UNWRAP_REF_DECAY, METAFN_KIND_INFO_TINFO,},
#line 570 "metafns.gperf"
{"reflect_constant_array", METAFN_REFLECT_CONSTANT_ARRAY, METAFN_KIND_INFO_INPUT_RANGE,},
#line 458 "metafns.gperf"
{"u8symbol_of", METAFN_U8SYMBOL_OF, METAFN_KIND_U8STRING_VIEW_OPERATORS,},
#line 576 "metafns.gperf"
{"is_integral_type", METAFN_IS_INTEGRAL_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 556 "metafns.gperf"
{"nonstatic_data_members_of", METAFN_NONSTATIC_DATA_MEMBERS_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,},
#line 673 "metafns.gperf"
{"decay", METAFN_DECAY, METAFN_KIND_INFO_TINFO,},
#line 603 "metafns.gperf"
{"is_final_type", METAFN_IS_FINAL_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 658 "metafns.gperf"
{"remove_volatile", METAFN_REMOVE_VOLATILE, METAFN_KIND_INFO_TINFO,},
#line 561 "metafns.gperf"
{"alignment_of", METAFN_ALIGNMENT_OF, METAFN_KIND_SIZE_T_INFO,},
#line 464 "metafns.gperf"
{"source_location_of", METAFN_SOURCE_LOCATION_OF, METAFN_KIND_SOURCE_LOCATION_INFO,},
{"is_void_type", METAFN_IS_VOID_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 583 "metafns.gperf"
{"is_pointer_type", METAFN_IS_POINTER_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 489 "metafns.gperf"
{"is_volatile", METAFN_IS_VOLATILE, METAFN_KIND_BOOL_INFO,},
#line 535 "metafns.gperf"
{"is_value", METAFN_IS_VALUE, METAFN_KIND_BOOL_INFO,},
#line 542 "metafns.gperf"
{"is_base", METAFN_IS_BASE, METAFN_KIND_BOOL_INFO,},
#line 503 "metafns.gperf"
{"is_variable", METAFN_IS_VARIABLE, METAFN_KIND_BOOL_INFO,},
#line 654 "metafns.gperf"
{"is_nothrow_convertible_type", METAFN_IS_NOTHROW_CONVERTIBLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
#line 633 "metafns.gperf"
{"is_nothrow_constructible_type", METAFN_IS_NOTHROW_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET,},
#line 659 "metafns.gperf"
{"is_nothrow_invocable_type", METAFN_IS_NOTHROW_INVOCABLE_TYPE, METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET,},
#line 638 "metafns.gperf"
{"is_nothrow_copy_assignable_type", METAFN_IS_NOTHROW_COPY_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 660 "metafns.gperf"
{"is_nothrow_invocable_r_type", METAFN_IS_NOTHROW_INVOCABLE_R_TYPE, METAFN_KIND_BOOL_TINFO_TINFO_REFLECTION_RANGET,},
#line 635 "metafns.gperf"
{"is_nothrow_copy_constructible_type", METAFN_IS_NOTHROW_COPY_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 651 "metafns.gperf"
{"is_base_of_type", METAFN_IS_BASE_OF_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
#line 639 "metafns.gperf"
{"is_nothrow_move_assignable_type", METAFN_IS_NOTHROW_MOVE_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 636 "metafns.gperf"
{"is_nothrow_move_constructible_type", METAFN_IS_NOTHROW_MOVE_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 527 "metafns.gperf"
{"is_variable_template", METAFN_IS_VARIABLE_TEMPLATE, METAFN_KIND_BOOL_INFO,},
#line 686 "metafns.gperf"
{"annotations_of_with_type", METAFN_ANNOTATIONS_OF_WITH_TYPE, METAFN_KIND_VECTOR_INFO_INFO_INFO,},
{"variant_size", METAFN_VARIANT_SIZE, METAFN_KIND_SIZE_T_TINFO,},
#line 579 "metafns.gperf"
{"is_null_pointer_type", METAFN_IS_NULL_POINTER_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 504 "metafns.gperf"
{"is_type", METAFN_IS_TYPE, METAFN_KIND_BOOL_INFO,},
#line 472 "metafns.gperf"
{"is_public", METAFN_IS_PUBLIC, METAFN_KIND_BOOL_INFO,},
#line 484 "metafns.gperf"
{"is_noexcept", METAFN_IS_NOEXCEPT, METAFN_KIND_BOOL_INFO,},
#line 567 "metafns.gperf"
{"extract", METAFN_EXTRACT, METAFN_KIND_TEMPLATE_PARM_INFO,},
#line 687 "metafns.gperf"
{"variant_alternative", METAFN_VARIANT_ALTERNATIVE, METAFN_KIND_INFO_SIZE_T_TINFO,},
#line 605 "metafns.gperf"
{"is_polymorphic_type", METAFN_IS_POLYMORPHIC_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 474 "metafns.gperf"
{"is_private", METAFN_IS_PRIVATE, METAFN_KIND_BOOL_INFO,},
#line 508 "metafns.gperf"
{"is_function", METAFN_IS_FUNCTION, METAFN_KIND_BOOL_INFO,},
#line 505 "metafns.gperf"
{"is_namespace", METAFN_IS_NAMESPACE, METAFN_KIND_BOOL_INFO,},
#line 656 "metafns.gperf"
{"is_pointer_interconvertible_base_of_type", METAFN_IS_POINTER_INTERCONVERTIBLE_BASE_OF_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
#line 612 "metafns.gperf"
{"is_bounded_array_type", METAFN_IS_BOUNDED_ARRAY_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 488 "metafns.gperf"
{"is_const", METAFN_IS_CONST, METAFN_KIND_BOOL_INFO,},
#line 534 "metafns.gperf"
{"is_concept", METAFN_IS_CONCEPT, METAFN_KIND_BOOL_INFO,},
#line 650 "metafns.gperf"
{"is_same_type", METAFN_IS_SAME_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
#line 558 "metafns.gperf"
{"bases_of", METAFN_BASES_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,},
#line 497 "metafns.gperf"
{"has_module_linkage", METAFN_HAS_MODULE_LINKAGE, METAFN_KIND_BOOL_INFO,},
#line 526 "metafns.gperf"
{"is_function_template", METAFN_IS_FUNCTION_TEMPLATE, METAFN_KIND_BOOL_INFO,},
#line 637 "metafns.gperf"
{"is_nothrow_assignable_type", METAFN_IS_NOTHROW_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
#line 509 "metafns.gperf"
{"is_conversion_function", METAFN_IS_CONVERSION_FUNCTION, METAFN_KIND_BOOL_INFO,},
#line 642 "metafns.gperf"
{"is_nothrow_destructible_type", METAFN_IS_NOTHROW_DESTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 653 "metafns.gperf"
{"is_convertible_type", METAFN_IS_CONVERTIBLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
#line 643 "metafns.gperf"
{"is_implicit_lifetime_type", METAFN_IS_IMPLICIT_LIFETIME_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 525 "metafns.gperf"
{"is_template", METAFN_IS_TEMPLATE, METAFN_KIND_BOOL_INFO,},
#line 634 "metafns.gperf"
{"is_nothrow_default_constructible_type", METAFN_IS_NOTHROW_DEFAULT_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 568 "metafns.gperf"
{"can_substitute", METAFN_CAN_SUBSTITUTE, METAFN_KIND_INFO_INFO_REFLECTION_RANGE,},
#line 530 "metafns.gperf"
{"is_conversion_function_template", METAFN_IS_CONVERSION_FUNCTION_TEMPLATE, METAFN_KIND_BOOL_INFO,},
#line 461 "metafns.gperf"
{"u8identifier_of", METAFN_U8IDENTIFIER_OF, METAFN_KIND_U8STRING_VIEW_INFO,},
{"symbol_of", METAFN_SYMBOL_OF, METAFN_KIND_STRING_VIEW_OPERATORS,},
#line 617 "metafns.gperf"
{"is_copy_constructible_type", METAFN_IS_COPY_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 615 "metafns.gperf"
{"is_constructible_type", METAFN_IS_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET,},
#line 495 "metafns.gperf"
{"has_automatic_storage_duration", METAFN_HAS_AUTOMATIC_STORAGE_DURATION, METAFN_KIND_BOOL_INFO,},
#line 620 "metafns.gperf"
{"is_copy_assignable_type", METAFN_IS_COPY_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 684 "metafns.gperf"
{"tuple_size", METAFN_TUPLE_SIZE, METAFN_KIND_SIZE_T_TINFO,},
#line 506 "metafns.gperf"
{"is_type_alias", METAFN_IS_TYPE_ALIAS, METAFN_KIND_BOOL_INFO,},
#line 515 "metafns.gperf"
{"is_copy_constructor", METAFN_IS_COPY_CONSTRUCTOR, METAFN_KIND_BOOL_INFO,},
#line 551 "metafns.gperf"
{"variable_of", METAFN_VARIABLE_OF, METAFN_KIND_INFO_INFO,},
#line 544 "metafns.gperf"
{"has_parent", METAFN_HAS_PARENT, METAFN_KIND_BOOL_INFO,},
#line 592 "metafns.gperf"
{"is_reflection_type", METAFN_IS_REFLECTION_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 595 "metafns.gperf"
{"is_fundamental_type", METAFN_IS_FUNDAMENTAL_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 655 "metafns.gperf"
{"is_layout_compatible_type", METAFN_IS_LAYOUT_COMPATIBLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
#line 566 "metafns.gperf"
{"bit_size_of", METAFN_BIT_SIZE_OF, METAFN_KIND_SIZE_T_INFO,},
#line 518 "metafns.gperf"
{"is_copy_assignment", METAFN_IS_COPY_ASSIGNMENT, METAFN_KIND_BOOL_INFO,},
#line 691 "metafns.gperf"
{"current", METAFN_ACCESS_CONTEXT_CURRENT, METAFN_KIND_ACCESS_CONTEXT_VOID,},
#line 678 "metafns.gperf"
{"common_type", METAFN_COMMON_TYPE, METAFN_KIND_INFO_REFLECTION_RANGET,},
#line 533 "metafns.gperf"
{"is_constructor_template", METAFN_IS_CONSTRUCTOR_TEMPLATE, METAFN_KIND_BOOL_INFO,},
#line 688 "metafns.gperf"
{"type_order", METAFN_TYPE_ORDER, METAFN_KIND_STRONG_ORDERING_TINFO_TINFO,},
#line 679 "metafns.gperf"
{"common_reference", METAFN_COMMON_REFERENCE, METAFN_KIND_INFO_REFLECTION_RANGET,},
#line 543 "metafns.gperf"
{"has_default_member_initializer", METAFN_HAS_DEFAULT_MEMBER_INITIALIZER, METAFN_KIND_BOOL_INFO,},
#line 685 "metafns.gperf"
{"annotations_of", METAFN_ANNOTATIONS_OF, METAFN_KIND_VECTOR_INFO_INFO,},
{"tuple_element", METAFN_TUPLE_ELEMENT, METAFN_KIND_INFO_SIZE_T_TINFO,},
#line 572 "metafns.gperf"
{"reflect_function", METAFN_REFLECT_FUNCTION, METAFN_KIND_INFO_TEMPLATE_PARM_REF,},
#line 523 "metafns.gperf"
{"has_default_argument", METAFN_HAS_DEFAULT_ARGUMENT, METAFN_KIND_BOOL_INFO,},
#line 618 "metafns.gperf"
{"is_move_constructible_type", METAFN_IS_MOVE_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 469 "metafns.gperf"
{"type_of", METAFN_TYPE_OF, METAFN_KIND_INFO_INFO,},
#line 513 "metafns.gperf"
{"is_constructor", METAFN_IS_CONSTRUCTOR, METAFN_KIND_BOOL_INFO,},
#line 623 "metafns.gperf"
{"is_swappable_type", METAFN_IS_SWAPPABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 641 "metafns.gperf"
{"is_nothrow_swappable_type", METAFN_IS_NOTHROW_SWAPPABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 593 "metafns.gperf"
{"is_reference_type", METAFN_IS_REFERENCE_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 500 "metafns.gperf"
{"has_linkage", METAFN_HAS_LINKAGE, METAFN_KIND_BOOL_INFO,},
#line 640 "metafns.gperf"
{"is_nothrow_swappable_with_type", METAFN_IS_NOTHROW_SWAPPABLE_WITH_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
#line 599 "metafns.gperf"
{"is_member_pointer_type", METAFN_IS_MEMBER_POINTER_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 621 "metafns.gperf"
{"is_move_assignable_type", METAFN_IS_MOVE_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 524 "metafns.gperf"
{"has_ellipsis_parameter", METAFN_HAS_ELLIPSIS_PARAMETER, METAFN_KIND_BOOL_INFO,},
#line 516 "metafns.gperf"
{"is_move_constructor", METAFN_IS_MOVE_CONSTRUCTOR, METAFN_KIND_BOOL_INFO,},
#line 550 "metafns.gperf"
{"parameters_of", METAFN_PARAMETERS_OF, METAFN_KIND_VECTOR_INFO_INFO,},
#line 564 "metafns.gperf"
{"size_of", METAFN_SIZE_OF, METAFN_KIND_SIZE_T_INFO,},
#line 519 "metafns.gperf"
{"is_move_assignment", METAFN_IS_MOVE_ASSIGNMENT, METAFN_KIND_BOOL_INFO,},
#line 619 "metafns.gperf"
{"is_assignable_type", METAFN_IS_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
#line 538 "metafns.gperf"
{"is_class_member", METAFN_IS_CLASS_MEMBER, METAFN_KIND_BOOL_INFO,},
#line 602 "metafns.gperf"
{"is_trivially_copyable_type", METAFN_IS_TRIVIALLY_COPYABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 517 "metafns.gperf"
{"is_assignment", METAFN_IS_ASSIGNMENT, METAFN_KIND_BOOL_INFO,},
#line 539 "metafns.gperf"
{"is_namespace_member", METAFN_IS_NAMESPACE_MEMBER, METAFN_KIND_BOOL_INFO,},
#line 557 "metafns.gperf"
{"members_of", METAFN_MEMBERS_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,},
#line 625 "metafns.gperf"
{"is_trivially_constructible_type", METAFN_IS_TRIVIALLY_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET,},
#line 630 "metafns.gperf"
{"is_trivially_copy_assignable_type", METAFN_IS_TRIVIALLY_COPY_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 627 "metafns.gperf"
{"is_trivially_copy_constructible_type", METAFN_IS_TRIVIALLY_COPY_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 649 "metafns.gperf"
{"extent", METAFN_EXTENT, METAFN_KIND_SIZE_T_TINFO_UNSIGNED,},
#line 588 "metafns.gperf"
{"is_enum_type", METAFN_IS_ENUM_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 548 "metafns.gperf"
{"template_of", METAFN_TEMPLATE_OF, METAFN_KIND_INFO_INFO,},
#line 528 "metafns.gperf"
{"is_class_template", METAFN_IS_CLASS_TEMPLATE, METAFN_KIND_BOOL_INFO,},
#line 512 "metafns.gperf"
{"is_special_member_function", METAFN_IS_SPECIAL_MEMBER_FUNCTION, METAFN_KIND_BOOL_INFO,},
#line 473 "metafns.gperf"
{"is_protected", METAFN_IS_PROTECTED, METAFN_KIND_BOOL_INFO,},
#line 540 "metafns.gperf"
{"is_nonstatic_data_member", METAFN_IS_NONSTATIC_DATA_MEMBER, METAFN_KIND_BOOL_INFO,},
#line 682 "metafns.gperf"
{"unwrap_reference", METAFN_UNWRAP_REFERENCE, METAFN_KIND_INFO_TINFO,},
#line 502 "metafns.gperf"
{"is_enumerable_type", METAFN_IS_ENUMERABLE_TYPE, METAFN_KIND_BOOL_INFO,},
#line 594 "metafns.gperf"
{"is_arithmetic_type", METAFN_IS_ARITHMETIC_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 545 "metafns.gperf"
{"parent_of", METAFN_PARENT_OF, METAFN_KIND_INFO_INFO,},
#line 476 "metafns.gperf"
{"is_pure_virtual", METAFN_IS_PURE_VIRTUAL, METAFN_KIND_BOOL_INFO,},
#line 675 "metafns.gperf"
{"add_pointer", METAFN_ADD_POINTER, METAFN_KIND_INFO_TINFO,},
#line 616 "metafns.gperf"
{"is_default_constructible_type", METAFN_IS_DEFAULT_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 680 "metafns.gperf"
{"underlying_type", METAFN_UNDERLYING_TYPE, METAFN_KIND_INFO_TINFO,},
#line 521 "metafns.gperf"
{"is_function_parameter", METAFN_IS_FUNCTION_PARAMETER, METAFN_KIND_BOOL_INFO,},
#line 464 "metafns.gperf"
{"identifier_of", METAFN_IDENTIFIER_OF, METAFN_KIND_STRING_VIEW_INFO,},
#line 597 "metafns.gperf"
{"is_scalar_type", METAFN_IS_SCALAR_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 669 "metafns.gperf"
{"add_rvalue_reference", METAFN_ADD_RVALUE_REFERENCE, METAFN_KIND_INFO_TINFO,},
#line 490 "metafns.gperf"
{"is_mutable_member", METAFN_IS_MUTABLE_MEMBER, METAFN_KIND_BOOL_INFO,},
#line 507 "metafns.gperf"
{"is_namespace_alias", METAFN_IS_NAMESPACE_ALIAS, METAFN_KIND_BOOL_INFO,},
#line 631 "metafns.gperf"
{"is_trivially_move_assignable_type", METAFN_IS_TRIVIALLY_MOVE_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 628 "metafns.gperf"
{"is_trivially_move_constructible_type", METAFN_IS_TRIVIALLY_MOVE_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 514 "metafns.gperf"
{"is_default_constructor", METAFN_IS_DEFAULT_CONSTRUCTOR, METAFN_KIND_BOOL_INFO,},
#line 486 "metafns.gperf"
{"is_enumerator", METAFN_IS_ENUMERATOR, METAFN_KIND_BOOL_INFO,},
#line 536 "metafns.gperf"
{"is_object", METAFN_IS_OBJECT, METAFN_KIND_BOOL_INFO,},
#line 608 "metafns.gperf"
{"is_aggregate_type", METAFN_IS_AGGREGATE_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 520 "metafns.gperf"
{"is_destructor", METAFN_IS_DESTRUCTOR, METAFN_KIND_BOOL_INFO,},
#line 587 "metafns.gperf"
{"is_member_function_pointer_type", METAFN_IS_MEMBER_FUNCTION_POINTER_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 596 "metafns.gperf"
{"is_object_type", METAFN_IS_OBJECT_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 569 "metafns.gperf"
{"substitute", METAFN_SUBSTITUTE, METAFN_KIND_INFO_INFO_REFLECTION_RANGE,},
#line 585 "metafns.gperf"
{"is_union_type", METAFN_IS_UNION_TYPE, METAFN_KIND_BOOL_TINFO,},
{"is_rvalue_reference_type", METAFN_IS_RVALUE_REFERENCE_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 666 "metafns.gperf"
{"add_cv", METAFN_ADD_CV, METAFN_KIND_INFO_TINFO,},
#line 570 "metafns.gperf"
{"reflect_constant", METAFN_REFLECT_CONSTANT, METAFN_KIND_INFO_TEMPLATE_PARM,},
#line 629 "metafns.gperf"
{"is_trivially_assignable_type", METAFN_IS_TRIVIALLY_ASSIGNABLE_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
#line 475 "metafns.gperf"
{"is_virtual", METAFN_IS_VIRTUAL, METAFN_KIND_BOOL_INFO,},
#line 493 "metafns.gperf"
{"has_static_storage_duration", METAFN_HAS_STATIC_STORAGE_DURATION, METAFN_KIND_BOOL_INFO,},
#line 668 "metafns.gperf"
{"add_lvalue_reference", METAFN_ADD_LVALUE_REFERENCE, METAFN_KIND_INFO_TINFO,},
#line 584 "metafns.gperf"
{"is_lvalue_reference_type", METAFN_IS_LVALUE_REFERENCE_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 562 "metafns.gperf"
{"enumerators_of", METAFN_ENUMERATORS_OF, METAFN_KIND_VECTOR_INFO_INFO,},
#line 624 "metafns.gperf"
{"is_destructible_type", METAFN_IS_DESTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 549 "metafns.gperf"
{"template_arguments_of", METAFN_TEMPLATE_ARGUMENTS_OF, METAFN_KIND_VECTOR_INFO_INFO,},
#line 657 "metafns.gperf"
{"is_invocable_type", METAFN_IS_INVOCABLE_TYPE, METAFN_KIND_BOOL_TINFO_REFLECTION_RANGET,},
#line 664 "metafns.gperf"
{"add_const", METAFN_ADD_CONST, METAFN_KIND_INFO_TINFO,},
#line 529 "metafns.gperf"
{"is_alias_template", METAFN_IS_ALIAS_TEMPLATE, METAFN_KIND_BOOL_INFO,},
#line 604 "metafns.gperf"
{"is_empty_type", METAFN_IS_EMPTY_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 632 "metafns.gperf"
{"is_trivially_destructible_type", METAFN_IS_TRIVIALLY_DESTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 498 "metafns.gperf"
{"has_external_linkage", METAFN_HAS_EXTERNAL_LINKAGE, METAFN_KIND_BOOL_INFO,},
#line 553 "metafns.gperf"
{"is_accessible", METAFN_IS_ACCESSIBLE, METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,},
#line 658 "metafns.gperf"
{"is_invocable_r_type", METAFN_IS_INVOCABLE_R_TYPE, METAFN_KIND_BOOL_TINFO_TINFO_REFLECTION_RANGET,},
#line 652 "metafns.gperf"
{"is_virtual_base_of_type", METAFN_IS_VIRTUAL_BASE_OF_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
#line 601 "metafns.gperf"
{"is_volatile_type", METAFN_IS_VOLATILE_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 573 "metafns.gperf"
{"reflect_constant_string", METAFN_REFLECT_CONSTANT_STRING, METAFN_KIND_INFO_INPUT_RANGE,},
#line 626 "metafns.gperf"
{"is_trivially_default_constructible_type", METAFN_IS_TRIVIALLY_DEFAULT_CONSTRUCTIBLE_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 532 "metafns.gperf"
{"is_literal_operator_template", METAFN_IS_LITERAL_OPERATOR_TEMPLATE, METAFN_KIND_BOOL_INFO,},
#line 460 "metafns.gperf"
{"operator_of", METAFN_OPERATOR_OF, METAFN_KIND_OPERATORS_INFO,},
#line 610 "metafns.gperf"
{"is_signed_type", METAFN_IS_SIGNED_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 614 "metafns.gperf"
{"is_scoped_enum_type", METAFN_IS_SCOPED_ENUM_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 622 "metafns.gperf"
{"is_swappable_with_type", METAFN_IS_SWAPPABLE_WITH_TYPE, METAFN_KIND_BOOL_TINFO_TINFO,},
#line 561 "metafns.gperf"
{"subobjects_of", METAFN_SUBOBJECTS_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,},
#line 563 "metafns.gperf"
{"offset_of", METAFN_OFFSET_OF, METAFN_KIND_MEMBER_OFFSET_INFO,},
#line 537 "metafns.gperf"
{"is_structured_binding", METAFN_IS_STRUCTURED_BINDING, METAFN_KIND_BOOL_INFO,},
#line 478 "metafns.gperf"
{"is_final", METAFN_IS_FINAL, METAFN_KIND_BOOL_INFO,},
#line 511 "metafns.gperf"
{"is_literal_operator", METAFN_IS_LITERAL_OPERATOR, METAFN_KIND_BOOL_INFO,},
#line 671 "metafns.gperf"
{"make_unsigned", METAFN_MAKE_UNSIGNED, METAFN_KIND_INFO_TINFO,},
#line 467 "metafns.gperf"
{"u8display_string_of", METAFN_U8DISPLAY_STRING_OF, METAFN_KIND_U8STRING_VIEW_INFO,},
#line 644 "metafns.gperf"
{"has_virtual_destructor", METAFN_HAS_VIRTUAL_DESTRUCTOR, METAFN_KIND_BOOL_TINFO,},
#line 600 "metafns.gperf"
{"is_const_type", METAFN_IS_CONST_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 483 "metafns.gperf"
{"is_explicit", METAFN_IS_EXPLICIT, METAFN_KIND_BOOL_INFO,},
#line 576 "metafns.gperf"
{"is_data_member_spec", METAFN_IS_DATA_MEMBER_SPEC, METAFN_KIND_BOOL_INFO,},
#line 501 "metafns.gperf"
{"is_complete_type", METAFN_IS_COMPLETE_TYPE, METAFN_KIND_BOOL_INFO,},
#line 487 "metafns.gperf"
{"is_annotation", METAFN_IS_ANNOTATION, METAFN_KIND_BOOL_INFO,},
#line 591 "metafns.gperf"
{"is_function_type", METAFN_IS_FUNCTION_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 552 "metafns.gperf"
{"return_type_of", METAFN_RETURN_TYPE_OF, METAFN_KIND_INFO_INFO,},
#line 479 "metafns.gperf"
{"is_deleted", METAFN_IS_DELETED, METAFN_KIND_BOOL_INFO,},
#line 471 "metafns.gperf"
{"constant_of", METAFN_CONSTANT_OF, METAFN_KIND_INFO_INFO,},
#line 665 "metafns.gperf"
{"add_volatile", METAFN_ADD_VOLATILE, METAFN_KIND_INFO_TINFO,},
#line 480 "metafns.gperf"
{"is_defaulted", METAFN_IS_DEFAULTED, METAFN_KIND_BOOL_INFO,},
#line 645 "metafns.gperf"
{"has_unique_object_representations", METAFN_HAS_UNIQUE_OBJECT_REPRESENTATIONS, METAFN_KIND_BOOL_TINFO,},
#line 586 "metafns.gperf"
{"is_member_object_pointer_type", METAFN_IS_MEMBER_OBJECT_POINTER_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 466 "metafns.gperf"
{"display_string_of", METAFN_DISPLAY_STRING_OF, METAFN_KIND_STRING_VIEW_INFO,},
#line 522 "metafns.gperf"
{"is_explicit_object_parameter", METAFN_IS_EXPLICIT_OBJECT_PARAMETER, METAFN_KIND_BOOL_INFO,},
#line 541 "metafns.gperf"
{"is_static_member", METAFN_IS_STATIC_MEMBER, METAFN_KIND_BOOL_INFO,},
#line 470 "metafns.gperf"
{"object_of", METAFN_OBJECT_OF, METAFN_KIND_INFO_INFO,},
#line 609 "metafns.gperf"
{"is_consteval_only_type", METAFN_IS_CONSTEVAL_ONLY_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 477 "metafns.gperf"
{"is_user_provided", METAFN_IS_USER_PROVIDED, METAFN_KIND_BOOL_INFO,},
{"is_override", METAFN_IS_OVERRIDE, METAFN_KIND_BOOL_INFO,},
#line 663 "metafns.gperf"
{"remove_cv", METAFN_REMOVE_CV, METAFN_KIND_INFO_TINFO,},
#line 571 "metafns.gperf"
{"reflect_object", METAFN_REFLECT_OBJECT, METAFN_KIND_INFO_TEMPLATE_PARM_REF,},
#line 581 "metafns.gperf"
{"is_floating_point_type", METAFN_IS_FLOATING_POINT_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 463 "metafns.gperf"
{"has_identifier", METAFN_HAS_IDENTIFIER, METAFN_KIND_BOOL_INFO,},
#line 667 "metafns.gperf"
{"remove_reference", METAFN_REMOVE_REFERENCE, METAFN_KIND_INFO_TINFO,},
#line 555 "metafns.gperf"
{"has_inaccessible_bases", METAFN_HAS_INACCESSIBLE_BASES, METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,},
#line 499 "metafns.gperf"
{"has_c_language_linkage", METAFN_HAS_C_LANGUAGE_LINKAGE, METAFN_KIND_BOOL_INFO,},
#line 556 "metafns.gperf"
{"has_inaccessible_subobjects", METAFN_HAS_INACCESSIBLE_SUBOBJECTS, METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,},
#line 672 "metafns.gperf"
{"remove_extent", METAFN_REMOVE_EXTENT, METAFN_KIND_INFO_TINFO,},
#line 554 "metafns.gperf"
{"has_inaccessible_nonstatic_data_members", METAFN_HAS_INACCESSIBLE_NONSTATIC_DATA_MEMBERS, METAFN_KIND_BOOL_INFO_ACCESS_CONTEXT,},
#line 492 "metafns.gperf"
{"is_rvalue_reference_qualified", METAFN_IS_RVALUE_REFERENCE_QUALIFIED, METAFN_KIND_BOOL_INFO,},
#line 647 "metafns.gperf"
{"reference_converts_from_temporary", METAFN_REFERENCE_CONVERTS_FROM_TEMPORARY, METAFN_KIND_BOOL_TINFO_TINFO,},
#line 590 "metafns.gperf"
{"is_class_type", METAFN_IS_CLASS_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 482 "metafns.gperf"
{"is_user_declared", METAFN_IS_USER_DECLARED, METAFN_KIND_BOOL_INFO,},
#line 575 "metafns.gperf"
{"data_member_spec", METAFN_DATA_MEMBER_SPEC, METAFN_KIND_INFO_TINFO_DATA_MEMBER_OPTIONS,},
#line 491 "metafns.gperf"
{"is_lvalue_reference_qualified", METAFN_IS_LVALUE_REFERENCE_QUALIFIED, METAFN_KIND_BOOL_INFO,},
#line 494 "metafns.gperf"
{"has_thread_storage_duration", METAFN_HAS_THREAD_STORAGE_DURATION, METAFN_KIND_BOOL_INFO,},
#line 485 "metafns.gperf"
{"is_bit_field", METAFN_IS_BIT_FIELD, METAFN_KIND_BOOL_INFO,},
#line 676 "metafns.gperf"
{"remove_cvref", METAFN_REMOVE_CVREF, METAFN_KIND_INFO_TINFO,},
#line 681 "metafns.gperf"
{"invoke_result", METAFN_INVOKE_RESULT, METAFN_KIND_INFO_TINFO_REFLECTION_RANGET,},
#line 547 "metafns.gperf"
{"has_template_arguments", METAFN_HAS_TEMPLATE_ARGUMENTS, METAFN_KIND_BOOL_INFO,},
#line 510 "metafns.gperf"
{"is_operator_function", METAFN_IS_OPERATOR_FUNCTION, METAFN_KIND_BOOL_INFO,},
#line 674 "metafns.gperf"
{"remove_pointer", METAFN_REMOVE_POINTER, METAFN_KIND_INFO_TINFO,},
#line 546 "metafns.gperf"
{"dealias", METAFN_DEALIAS, METAFN_KIND_INFO_INFO,},
#line 661 "metafns.gperf"
{"remove_const", METAFN_REMOVE_CONST, METAFN_KIND_INFO_TINFO,},
#line 531 "metafns.gperf"
{"is_operator_function_template", METAFN_IS_OPERATOR_FUNCTION_TEMPLATE, METAFN_KIND_BOOL_INFO,},
#line 646 "metafns.gperf"
{"reference_constructs_from_temporary", METAFN_REFERENCE_CONSTRUCTS_FROM_TEMPORARY, METAFN_KIND_BOOL_TINFO_TINFO,},
#line 673 "metafns.gperf"
{"remove_all_extents", METAFN_REMOVE_ALL_EXTENTS, METAFN_KIND_INFO_TINFO,},
#line 582 "metafns.gperf"
{"is_array_type", METAFN_IS_ARRAY_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 496 "metafns.gperf"
{"has_internal_linkage", METAFN_HAS_INTERNAL_LINKAGE, METAFN_KIND_BOOL_INFO,},
#line 670 "metafns.gperf"
{"make_signed", METAFN_MAKE_SIGNED, METAFN_KIND_INFO_TINFO,},
#line 559 "metafns.gperf"
{"static_data_members_of", METAFN_STATIC_DATA_MEMBERS_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,},
#line 598 "metafns.gperf"
{"is_compound_type", METAFN_IS_COMPOUND_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 606 "metafns.gperf"
{"is_abstract_type", METAFN_IS_ABSTRACT_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 577 "metafns.gperf"
{"define_aggregate", METAFN_DEFINE_AGGREGATE, METAFN_KIND_INFO_INFO_REFLECTION_RANGE,},
#line 692 "metafns.gperf"
{"_S_exception_cvt_to_utf8", METAFN_EXCEPTION__S_EXCEPTION_CVT_TO_UTF8, METAFN_KIND_U8STRING_VIEW_INPUT_RANGE,},
#line 693 "metafns.gperf"
{"_S_exception_cvt_from_utf8", METAFN_EXCEPTION__S_EXCEPTION_CVT_FROM_UTF8, METAFN_KIND_STRING_VIEW_INPUT_RANGE,},
#line 613 "metafns.gperf"
{"is_unbounded_array_type", METAFN_IS_UNBOUNDED_ARRAY_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 603 "metafns.gperf"
{"is_standard_layout_type", METAFN_IS_STANDARD_LAYOUT_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 683 "metafns.gperf"
{"unwrap_ref_decay", METAFN_UNWRAP_REF_DECAY, METAFN_KIND_INFO_TINFO,},
#line 574 "metafns.gperf"
{"reflect_constant_array", METAFN_REFLECT_CONSTANT_ARRAY, METAFN_KIND_INFO_INPUT_RANGE,},
#line 462 "metafns.gperf"
{"u8symbol_of", METAFN_U8SYMBOL_OF, METAFN_KIND_U8STRING_VIEW_OPERATORS,},
#line 580 "metafns.gperf"
{"is_integral_type", METAFN_IS_INTEGRAL_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 560 "metafns.gperf"
{"nonstatic_data_members_of", METAFN_NONSTATIC_DATA_MEMBERS_OF, METAFN_KIND_VECTOR_INFO_INFO_ACCESS_CONTEXT,},
#line 677 "metafns.gperf"
{"decay", METAFN_DECAY, METAFN_KIND_INFO_TINFO,},
#line 607 "metafns.gperf"
{"is_final_type", METAFN_IS_FINAL_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 662 "metafns.gperf"
{"remove_volatile", METAFN_REMOVE_VOLATILE, METAFN_KIND_INFO_TINFO,},
#line 565 "metafns.gperf"
{"alignment_of", METAFN_ALIGNMENT_OF, METAFN_KIND_SIZE_T_INFO,},
#line 468 "metafns.gperf"
{"source_location_of", METAFN_SOURCE_LOCATION_OF, METAFN_KIND_SOURCE_LOCATION_INFO,},
#line 690 "metafns.gperf"
{"annotations_of_with_type", METAFN_ANNOTATIONS_OF_WITH_TYPE, METAFN_KIND_VECTOR_INFO_INFO_INFO,},
#line 465 "metafns.gperf"
{"u8identifier_of", METAFN_U8IDENTIFIER_OF, METAFN_KIND_U8STRING_VIEW_INFO,},
#line 689 "metafns.gperf"
{"annotations_of", METAFN_ANNOTATIONS_OF, METAFN_KIND_VECTOR_INFO_INFO,},
#line 589 "metafns.gperf"
{"is_union_type", METAFN_IS_UNION_TYPE, METAFN_KIND_BOOL_TINFO,},
#line 481 "metafns.gperf"
{"is_user_provided", METAFN_IS_USER_PROVIDED, METAFN_KIND_BOOL_INFO,},
#line 611 "metafns.gperf"
{"is_unsigned_type", METAFN_IS_UNSIGNED_TYPE, METAFN_KIND_BOOL_TINFO,}
};
#if (defined __GNUC__ && __GNUC__ + (__GNUC_MINOR__ >= 6) > 4) || (defined __clang__ && __clang_major__ >= 3)

View File

@@ -7576,10 +7576,11 @@ tparm_object_argument (tree var)
indicated TYPE. If the conversion is successful, return the
converted value. If the conversion is unsuccessful, return
NULL_TREE if we issued an error message, or error_mark_node if we
did not. We issue error messages for out-and-out bad template
parameters, but not simply because the conversion failed, since we
might be just trying to do argument deduction. Both TYPE and EXPR
must be non-dependent.
did not. If tf_error is not set in COMPLAIN, whether NULL_TREE
or error_mark_node is returned doesn't matter. We issue error
messages for out-and-out bad template parameters, but not simply
because the conversion failed, since we might be just trying to
do argument deduction. Both TYPE and EXPR must be non-dependent.
The conversion follows the special rules described in
[temp.arg.nontype], and it is much more strict than an implicit

View File

@@ -7341,8 +7341,7 @@ process_metafunction (const constexpr_ctx *ctx, tree fun, tree call,
tree type = NULL_TREE, ht, info;
reflect_kind kind = REFLECT_UNDEF;
for (int argno = 0; argno < 3; ++argno)
switch ((minfo->kind >> ((argno + 1) * METAFN_KIND_SHIFT))
& METAFN_KIND_MASK)
switch (METAFN_KIND_ARG (argno))
{
case METAFN_KIND_ARG_VOID:
break;
@@ -7354,13 +7353,10 @@ process_metafunction (const constexpr_ctx *ctx, tree fun, tree call,
if (*jump_target || *non_constant_p)
return NULL_TREE;
ht = REFLECT_EXPR_HANDLE (info);
if (((minfo->kind >> ((argno + 1) * METAFN_KIND_SHIFT))
& METAFN_KIND_MASK) == METAFN_KIND_ARG_TINFO)
{
if (eval_is_type (ht) != boolean_true_node)
return throw_exception_nontype (loc, ctx, fun, non_constant_p,
jump_target);
}
if (METAFN_KIND_ARG (argno) == METAFN_KIND_ARG_TINFO
&& eval_is_type (ht) != boolean_true_node)
return throw_exception_nontype (loc, ctx, fun, non_constant_p,
jump_target);
if (argno == 0)
{
kind = REFLECT_EXPR_KIND (info);

View File

@@ -12227,7 +12227,8 @@ and,
(simplify
(bit_ior:c (lshift @0 INTEGER_CST@1)
(bit_xor (rshift @2 INTEGER_CST@3) INTEGER_CST@4))
(if (tree_fits_uhwi_p (@1)
(if (type_has_mode_precision_p (type)
&& tree_fits_uhwi_p (@1)
&& tree_fits_uhwi_p (@3)
&& tree_fits_uhwi_p (@4)
&& ((~((HOST_WIDE_INT_1U << tree_to_uhwi (@1)) - 1)) & tree_to_uhwi (@4)) == 0
@@ -12241,7 +12242,8 @@ and,
(simplify
(bit_ior:c (bit_xor (lshift @0 INTEGER_CST@1) INTEGER_CST@2)
(rshift @3 INTEGER_CST@4))
(if (tree_fits_uhwi_p (@1)
(if (type_has_mode_precision_p (type)
&& tree_fits_uhwi_p (@1)
&& tree_fits_uhwi_p (@2)
&& tree_fits_uhwi_p (@4)
&& (((((HOST_WIDE_INT_1U << tree_to_uhwi (@1)) - 1)) & tree_to_uhwi (@2)) == 0)

View File

@@ -1,6 +1,7 @@
/* { dg-do compile } */
/* { dg-options "-O1 -finstrument-functions -fno-forward-propagate -fno-delete-dead-exceptions -fnon-call-exceptions" } */
/* { dg-require-effective-target exceptions } */
/* { dg-require-effective-target int128 } */
/* PR rtl-optimization/116053 */

View File

@@ -0,0 +1,13 @@
/* { dg-do compile { target bitint } } */
/* { dg-options "-std=c23 -pedantic-errors" } */
typedef unsigned _BitInt(4) B;
B a, b;
void
foo()
{
b *= (a ^ 2wbu) << 2 |
(a ^ 2wbu) >> 2;
}

View File

@@ -1,7 +1,7 @@
/* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
/* { dg-require-effective-target vect_int} */
/* { dg-require-effective-target vect_condition} */
/* { dg-require-effective-target vect_shift} */
/* { dg-require-effective-target vect_int } */
/* { dg-require-effective-target vect_condition } */
/* { dg-require-effective-target vect_shift } */
@@ -27,4 +27,4 @@ int main (void)
return 0;
}
/* { dg-final { scan-tree-dump-times "optimized: loop vectorized" 1 "vect" } } */
/* { dg-final { scan-tree-dump-times "optimized: loop vectorized" 1 "vect" } } */

View File

@@ -1,7 +1,7 @@
/* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
/* { dg-require-effective-target vect_int} */
/* { dg-require-effective-target vect_condition} */
/* { dg-require-effective-target vect_shift} */
/* { dg-require-effective-target vect_int } */
/* { dg-require-effective-target vect_condition } */
/* { dg-require-effective-target vect_shift } */
@@ -28,4 +28,4 @@ int main (void)
return 0;
}
/* { dg-final { scan-tree-dump-times "optimized: loop vectorized" 1 "vect" } } */
/* { dg-final { scan-tree-dump-times "optimized: loop vectorized" 1 "vect" } } */

View File

@@ -1,7 +1,7 @@
/* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
/* { dg-require-effective-target vect_int} */
/* { dg-require-effective-target vect_condition} */
/* { dg-require-effective-target vect_shift} */
/* { dg-require-effective-target vect_int } */
/* { dg-require-effective-target vect_condition } */
/* { dg-require-effective-target vect_shift } */
@@ -28,4 +28,4 @@ int main (void)
return 0;
}
/* { dg-final { scan-tree-dump-times "optimized: loop vectorized" 1 "vect" } } */
/* { dg-final { scan-tree-dump-times "optimized: loop vectorized" 1 "vect" } } */

View File

@@ -1,7 +1,7 @@
/* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
/* { dg-require-effective-target vect_int} */
/* { dg-require-effective-target vect_condition} */
/* { dg-require-effective-target vect_shift} */
/* { dg-require-effective-target vect_int } */
/* { dg-require-effective-target vect_condition } */
/* { dg-require-effective-target vect_shift } */
@@ -28,4 +28,4 @@ int main (void)
return 0;
}
/* { dg-final { scan-tree-dump-times "optimized: loop vectorized" 1 "vect" } } */
/* { dg-final { scan-tree-dump-times "optimized: loop vectorized" 1 "vect" } } */

View File

@@ -1,7 +1,7 @@
/* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
/* { dg-require-effective-target vect_int} */
/* { dg-require-effective-target vect_condition} */
/* { dg-require-effective-target vect_shift} */
/* { dg-require-effective-target vect_int } */
/* { dg-require-effective-target vect_condition } */
/* { dg-require-effective-target vect_shift } */
@@ -28,4 +28,4 @@ int main (void)
return 0;
}
/* { dg-final { scan-tree-dump-times "optimized: loop vectorized" 1 "vect" } } */
/* { dg-final { scan-tree-dump-times "optimized: loop vectorized" 1 "vect" } } */

View File

@@ -1,7 +1,7 @@
/* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
/* { dg-require-effective-target vect_int} */
/* { dg-require-effective-target vect_condition} */
/* { dg-require-effective-target vect_shift} */
/* { dg-require-effective-target vect_int } */
/* { dg-require-effective-target vect_condition } */
/* { dg-require-effective-target vect_shift } */
@@ -28,4 +28,4 @@ int main (void)
return 0;
}
/* { dg-final { scan-tree-dump-times "optimized: loop vectorized" 1 "vect" } } */
/* { dg-final { scan-tree-dump-times "optimized: loop vectorized" 1 "vect" } } */

View File

@@ -1,7 +1,7 @@
/* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
/* { dg-require-effective-target vect_int} */
/* { dg-require-effective-target vect_condition} */
/* { dg-require-effective-target vect_shift} */
/* { dg-require-effective-target vect_int } */
/* { dg-require-effective-target vect_condition } */
/* { dg-require-effective-target vect_shift } */
@@ -27,4 +27,4 @@ int main (void)
return 0;
}
/* { dg-final { scan-tree-dump-times "optimized: loop vectorized" 1 "vect" } } */
/* { dg-final { scan-tree-dump-times "optimized: loop vectorized" 1 "vect" } } */

View File

@@ -1,7 +1,7 @@
/* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
/* { dg-require-effective-target vect_int} */
/* { dg-require-effective-target vect_condition} */
/* { dg-require-effective-target vect_shift} */
/* { dg-require-effective-target vect_int } */
/* { dg-require-effective-target vect_condition } */
/* { dg-require-effective-target vect_shift } */
@@ -27,4 +27,4 @@ int main (void)
return 0;
}
/* { dg-final { scan-tree-dump-times "optimized: loop vectorized" 1 "vect" } } */
/* { dg-final { scan-tree-dump-times "optimized: loop vectorized" 1 "vect" } } */

View File

@@ -1,7 +1,7 @@
/* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
/* { dg-require-effective-target vect_int} */
/* { dg-require-effective-target vect_condition} */
/* { dg-require-effective-target vect_shift} */
/* { dg-require-effective-target vect_int } */
/* { dg-require-effective-target vect_condition } */
/* { dg-require-effective-target vect_shift } */
@@ -27,4 +27,4 @@ int main (void)
return 0;
}
/* { dg-final { scan-tree-dump-times "optimized: loop vectorized" 1 "vect" } } */
/* { dg-final { scan-tree-dump-times "optimized: loop vectorized" 1 "vect" } } */

View File

@@ -1,7 +1,7 @@
/* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
/* { dg-require-effective-target vect_int} */
/* { dg-require-effective-target vect_condition} */
/* { dg-require-effective-target vect_shift} */
/* { dg-require-effective-target vect_int } */
/* { dg-require-effective-target vect_condition } */
/* { dg-require-effective-target vect_shift } */
@@ -28,4 +28,4 @@ int main (void)
return 0;
}
/* { dg-final { scan-tree-dump-times "optimized: loop vectorized" 1 "vect" } } */
/* { dg-final { scan-tree-dump-times "optimized: loop vectorized" 1 "vect" } } */

View File

@@ -1,7 +1,7 @@
/* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
/* { dg-require-effective-target vect_int} */
/* { dg-require-effective-target vect_condition} */
/* { dg-require-effective-target vect_shift} */
/* { dg-require-effective-target vect_int } */
/* { dg-require-effective-target vect_condition } */
/* { dg-require-effective-target vect_shift } */
@@ -28,4 +28,4 @@ int main (void)
return 0;
}
/* { dg-final { scan-tree-dump-times "optimized: loop vectorized" 1 "vect" } } */
/* { dg-final { scan-tree-dump-times "optimized: loop vectorized" 1 "vect" } } */

View File

@@ -1,7 +1,7 @@
/* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
/* { dg-require-effective-target vect_int} */
/* { dg-require-effective-target vect_condition} */
/* { dg-require-effective-target vect_shift} */
/* { dg-require-effective-target vect_int } */
/* { dg-require-effective-target vect_condition } */
/* { dg-require-effective-target vect_shift } */
@@ -28,4 +28,4 @@ int main (void)
return 0;
}
/* { dg-final { scan-tree-dump-times "optimized: loop vectorized" 1 "vect" } } */
/* { dg-final { scan-tree-dump-times "optimized: loop vectorized" 1 "vect" } } */

View File

@@ -1,7 +1,7 @@
/* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
/* { dg-require-effective-target vect_int} */
/* { dg-require-effective-target vect_condition} */
/* { dg-require-effective-target vect_shift} */
/* { dg-require-effective-target vect_int } */
/* { dg-require-effective-target vect_condition } */
/* { dg-require-effective-target vect_shift } */

View File

@@ -1,7 +1,7 @@
/* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
/* { dg-require-effective-target vect_int} */
/* { dg-require-effective-target vect_condition} */
/* { dg-require-effective-target vect_shift} */
/* { dg-require-effective-target vect_int } */
/* { dg-require-effective-target vect_condition } */
/* { dg-require-effective-target vect_shift } */

View File

@@ -1,7 +1,7 @@
/* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
/* { dg-require-effective-target vect_int} */
/* { dg-require-effective-target vect_condition} */
/* { dg-require-effective-target vect_shift} */
/* { dg-require-effective-target vect_int } */
/* { dg-require-effective-target vect_condition } */
/* { dg-require-effective-target vect_shift } */

View File

@@ -1,7 +1,7 @@
/* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
/* { dg-require-effective-target vect_int} */
/* { dg-require-effective-target vect_condition} */
/* { dg-require-effective-target vect_shift} */
/* { dg-require-effective-target vect_int } */
/* { dg-require-effective-target vect_condition } */
/* { dg-require-effective-target vect_shift } */

View File

@@ -1,7 +1,7 @@
/* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
/* { dg-require-effective-target vect_int} */
/* { dg-require-effective-target vect_condition} */
/* { dg-require-effective-target vect_shift} */
/* { dg-require-effective-target vect_int } */
/* { dg-require-effective-target vect_condition } */
/* { dg-require-effective-target vect_shift } */

View File

@@ -1,7 +1,7 @@
/* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
/* { dg-require-effective-target vect_int} */
/* { dg-require-effective-target vect_condition} */
/* { dg-require-effective-target vect_shift} */
/* { dg-require-effective-target vect_int } */
/* { dg-require-effective-target vect_condition } */
/* { dg-require-effective-target vect_shift } */

View File

@@ -1,7 +1,7 @@
/* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
/* { dg-require-effective-target vect_int} */
/* { dg-require-effective-target vect_condition} */
/* { dg-require-effective-target vect_shift} */
/* { dg-require-effective-target vect_int } */
/* { dg-require-effective-target vect_condition } */
/* { dg-require-effective-target vect_shift } */

View File

@@ -1,7 +1,7 @@
/* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
/* { dg-require-effective-target vect_int} */
/* { dg-require-effective-target vect_condition} */
/* { dg-require-effective-target vect_shift} */
/* { dg-require-effective-target vect_int } */
/* { dg-require-effective-target vect_condition } */
/* { dg-require-effective-target vect_shift } */

View File

@@ -1,7 +1,7 @@
/* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
/* { dg-require-effective-target vect_int} */
/* { dg-require-effective-target vect_condition} */
/* { dg-require-effective-target vect_shift} */
/* { dg-require-effective-target vect_int } */
/* { dg-require-effective-target vect_condition } */
/* { dg-require-effective-target vect_shift } */

View File

@@ -1,7 +1,7 @@
/* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
/* { dg-require-effective-target vect_int} */
/* { dg-require-effective-target vect_condition} */
/* { dg-require-effective-target vect_shift} */
/* { dg-require-effective-target vect_int } */
/* { dg-require-effective-target vect_condition } */
/* { dg-require-effective-target vect_shift } */

View File

@@ -1,7 +1,7 @@
/* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
/* { dg-require-effective-target vect_int} */
/* { dg-require-effective-target vect_condition} */
/* { dg-require-effective-target vect_shift} */
/* { dg-require-effective-target vect_int } */
/* { dg-require-effective-target vect_condition } */
/* { dg-require-effective-target vect_shift } */

View File

@@ -1,7 +1,7 @@
/* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
/* { dg-require-effective-target vect_int} */
/* { dg-require-effective-target vect_condition} */
/* { dg-require-effective-target vect_shift} */
/* { dg-require-effective-target vect_int } */
/* { dg-require-effective-target vect_condition } */
/* { dg-require-effective-target vect_shift } */

View File

@@ -1,7 +1,7 @@
/* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
/* { dg-require-effective-target vect_int} */
/* { dg-require-effective-target vect_condition} */
/* { dg-require-effective-target vect_shift} */
/* { dg-require-effective-target vect_int } */
/* { dg-require-effective-target vect_condition } */
/* { dg-require-effective-target vect_shift } */

View File

@@ -1,7 +1,7 @@
/* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
/* { dg-require-effective-target vect_int} */
/* { dg-require-effective-target vect_condition} */
/* { dg-require-effective-target vect_shift} */
/* { dg-require-effective-target vect_int } */
/* { dg-require-effective-target vect_condition } */
/* { dg-require-effective-target vect_shift } */

View File

@@ -1,7 +1,7 @@
/* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
/* { dg-require-effective-target vect_int} */
/* { dg-require-effective-target vect_condition} */
/* { dg-require-effective-target vect_shift} */
/* { dg-require-effective-target vect_int } */
/* { dg-require-effective-target vect_condition } */
/* { dg-require-effective-target vect_shift } */

View File

@@ -1,7 +1,7 @@
/* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
/* { dg-require-effective-target vect_int} */
/* { dg-require-effective-target vect_condition} */
/* { dg-require-effective-target vect_shift} */
/* { dg-require-effective-target vect_int } */
/* { dg-require-effective-target vect_condition } */
/* { dg-require-effective-target vect_shift } */

View File

@@ -1,7 +1,7 @@
/* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
/* { dg-require-effective-target vect_int} */
/* { dg-require-effective-target vect_condition} */
/* { dg-require-effective-target vect_shift} */
/* { dg-require-effective-target vect_int } */
/* { dg-require-effective-target vect_condition } */
/* { dg-require-effective-target vect_shift } */

View File

@@ -1,7 +1,7 @@
/* { dg-additional-options "-fgimple -fdump-tree-optimized" } */
/* { dg-require-effective-target vect_int} */
/* { dg-require-effective-target vect_condition} */
/* { dg-require-effective-target vect_shift} */
/* { dg-require-effective-target vect_int } */
/* { dg-require-effective-target vect_condition } */
/* { dg-require-effective-target vect_shift } */

View File

@@ -14144,10 +14144,13 @@ proc check_effective_target_movdir { } {
} "-mmovdiri -mmovdir64b" ]
}
# Return 1 if the target does not support address sanitizer, 0 otherwise
# Return 1 if the target does not support address sanitizer, 0 otherwise.
# Note that this is usable only for compilation test cases. (Otherwise, use a
# proper 'asan.exp' file with 'asan_init'/'asan_finish' calls to set up linker
# paths, etc.)
proc check_effective_target_no_fsanitize_address {} {
if ![check_no_compiler_messages fsanitize_address executable {
if ![check_no_compiler_messages fsanitize_address assembly {
int main (void) { return 0; }
} "-fsanitize=address" ] {
return 1;

View File

@@ -1,5 +1,5 @@
// { dg-do compile { target c++11 } }
// { dg-additional-options "-Wno-deprecated-declarations" { target { c++2a } } }
// { dg-additional-options "-Wno-deprecated-declarations" { target { c++20 } } }
// 2010-02-21 Paolo Carlini <paolo.carlini@oracle.com>
// Copyright (C) 2010-2026 Free Software Foundation, Inc.

View File

@@ -1,5 +1,5 @@
// { dg-do compile { target c++11 } }
// { dg-additional-options "-Wno-deprecated-declarations" { target { c++2a } } }
// { dg-additional-options "-Wno-deprecated-declarations" { target { c++20 } } }
// 2010-02-21 Paolo Carlini <paolo.carlini@oracle.com>
//

View File

@@ -1,5 +1,5 @@
// { dg-do compile { target c++11 } }
// { dg-additional-options "-Wno-deprecated-declarations" { target { c++2a } } }
// { dg-additional-options "-Wno-deprecated-declarations" { target { c++20 } } }
// 2010-02-21 Paolo Carlini <pcarlini@suse.de>
//

View File

@@ -1,5 +1,5 @@
// { dg-do compile { target c++11 } }
// { dg-skip-if "result_type removed for C++20" { c++2a } }
// { dg-skip-if "result_type removed for C++20" { c++20 } }
// 2010-10-06 Paolo Carlini <paolo.carlini@oracle.com>

View File

@@ -1,5 +1,5 @@
// { dg-do compile { target c++11 } }
// { dg-skip-if "argument_type removed for C++20" { c++2a } }
// { dg-skip-if "argument_type removed for C++20" { c++20 } }
// 2010-10-06 Paolo Carlini <paolo.carlini@oracle.com>

View File

@@ -1,5 +1,5 @@
// { dg-do compile { target c++11 } }
// { dg-skip-if "argument_type removed for C++20" { c++2a } }
// { dg-skip-if "argument_type removed for C++20" { c++20 } }
// Copyright (C) 2011-2026 Free Software Foundation, Inc.
//

View File

@@ -1,5 +1,5 @@
// { dg-do compile { target c++11 } }
// { dg-additional-options "-Wno-volatile" { target c++2a } }
// { dg-additional-options "-Wno-volatile" { target c++20 } }
// Copyright (C) 2012-2026 Free Software Foundation, Inc.
//

View File

@@ -15,7 +15,7 @@
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
// { dg-additional-options "-Wno-deprecated" { target c++2a } }
// { dg-additional-options "-Wno-deprecated" { target c++20 } }
// { dg-do compile { target c++17 } }
// PR libstdc++/78939

View File

@@ -47,5 +47,5 @@ test01()
alloc_type a;
std::tuple<X> t(std::allocator_arg, a); // this is required to be ill-formed
// { dg-error "failed: .* uses_allocator is true" "" { target *-*-* } 0 }
// { dg-error "too many initializers for 'X'" "" { target c++2a } 0 }
// { dg-error "too many initializers for 'X'" "" { target c++20 } 0 }
}

View File

@@ -44,4 +44,4 @@ void test01()
tuple<Type> t(allocator_arg, a, 1);
}
// { dg-error "failed: .* uses_allocator is true" "" { target *-*-* } 0 }
// { dg-error "no matching function for call" "" { target c++2a } 0 }
// { dg-error "no matching function for call" "" { target c++20 } 0 }

View File

@@ -1,4 +1,4 @@
// { dg-additional-options "-Wno-deprecated-declarations" { target c++2a } }
// { dg-additional-options "-Wno-deprecated-declarations" { target c++20 } }
// { dg-do compile { target c++17 } }
// { dg-additional-options "-freflection" { target c++26 } }

View File

@@ -1,5 +1,5 @@
// { dg-do compile { target c++14 } }
// { dg-additional-options "-Wno-deprecated-declarations" { target { c++2a } } }
// { dg-additional-options "-Wno-deprecated-declarations" { target { c++20 } } }
// Copyright (C) 2014-2026 Free Software Foundation, Inc.
//

View File

@@ -1,4 +1,4 @@
// { dg-do run { target { c++11 && { ! c++2a } } } }
// { dg-do run { target { c++11 && { ! c++20 } } } }
// 2007-10-26 Paolo Carlini <pcarlini@suse.de>

View File

@@ -1,4 +1,4 @@
// { dg-do run { target { c++11 && { ! c++2a } } } }
// { dg-do run { target { c++11 && { ! c++20 } } } }
// 2007-10-26 Paolo Carlini <pcarlini@suse.de>

View File

@@ -473,19 +473,22 @@ if { [info procs saved-dg-test] == [list] } {
}
}
# These should be adjusted whenever the compiler's default -std is updated
# or a newer C++ effective target is added.
set v3_default_std 20
set v3_max_std 26
# Find the minimum standard required by a test, if higher than the default_std.
proc v3-minimum-std { test default_std max_std } {
for {set s $default_std} {$s <= $max_std} {incr s 3} {
global v3_default_std
global v3_max_std
for {set s $default_std} {$s <= $v3_max_std} {incr s 3} {
if [search_for $test "\{ dg-do * \{ target c++$s"] {
return $s
} elseif [search_for $test "\{ dg-require-effective-target c++$s"] {
return $s
}
}
# TODO: replace all c++2a with c++20 and remove this case.
if [search_for $test "\{ dg-do * \{ target c++2a"] {
return 20
}
return $default_std
}
@@ -500,13 +503,15 @@ if [info exists env(GLIBCXX_TESTSUITE_STDS)] {
# Allow adjusting which -std we test with -fmodules.
if ![info exists v3_modules_std] {
set v3_modules_std "26"
set v3_modules_std "$v3_max_std"
}
# Modified dg-runtest that runs tests in multiple standard modes,
# unless they specifically specify one standard.
proc v3-dg-runtest { testcases flags default-extra-flags } {
global runtests
global v3_default_std
global v3_max_std
global v3_modules_std
foreach test $testcases {
@@ -533,22 +538,18 @@ proc v3-dg-runtest { testcases flags default-extra-flags } {
# If the test requires a newer C++ version than which
# is tested by default, use that C++ version for that
# single test.
# These should be adjusted whenever the default -std is
# updated or newer C++ effective target is added.
set default_std 20
set max_std 26
set min_std [v3-minimum-std $test $default_std $max_std]
if { $min_std > $default_std } {
set min_std [v3-minimum-std $test]
if { $min_std > $v3_default_std } {
set std_list $min_std
if { $min_std != $max_std } {
if { $min_std != $v3_max_std } {
# Also test the latest version.
lappend std_list "$max_std"
lappend std_list "$v3_max_std"
}
} else {
# Only run each test once with the default -std option.
# This avoids increasing the run time for most testers.
# Libstdc++ developers can override this with v3_std_list.
set std_list $default_std
set std_list $v3_default_std
}
}
set option_list { }

View File

@@ -1,5 +1,5 @@
// { dg-options "-g -O0 -std=gnu++2a" }
// { dg-do run { target c++2a } }
// { dg-options "-g -O0 -std=gnu++20" }
// { dg-do run { target c++20 } }
// { dg-additional-options "-DTEST_ZONED_TIME" { target tzdb } }
// Copyright The GNU Toolchain Authors.

View File

@@ -1,5 +1,5 @@
// { dg-options "-g -O0 -std=gnu++2a" }
// { dg-do run { target c++2a } }
// { dg-options "-g -O0 -std=gnu++20" }
// { dg-do run { target c++20 } }
// Copyright (C) 2014-2026 Free Software Foundation, Inc.
//

View File

@@ -15,7 +15,7 @@
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
// { dg-do compile { target c++2a } }
// { dg-do compile { target c++20 } }
// { dg-add-options strict_std }
#include <ranges>

View File

@@ -17,7 +17,7 @@
// with this library; see the file COPYING3. If not see
// <http://www.gnu.org/licenses/>.
// { dg-additional-options "-Wno-volatile" { target c++2a } }
// { dg-additional-options "-Wno-volatile" { target c++20 } }
// 3.4 function return types
#include <tr1/functional>