I'm going to split this patch in multiple pieces.  Here I'm providing
the description and the ChangeLog for the whole submission.  It all
needs to be committed at once.

The whole branch can be found at
<https://forge.sourceware.org/marek/gcc/commits/branch/reflection>

Unfortunately, as I'm about to post these patches, I'm noticing that
a number of gomp tesst are now failing with -std=gnu++26; the problem
is in preprocessing the [: and :] tokens.  Jakub has a patch so consider
it fixed.

Otherwise, bootstrapped/regtested on x86_64-pc-linux-gnu.

-- >8 --
This patch implements C++26 Reflection as specified by P2996R13, which allows
users to perform magic.  This patch also implements related papers:
Annotations for Reflection (P3394R4),
Splicing a base class subobject (P3293R3),
define_static_{string,object,array} (P3491R3),
Function Parameter Reflectio (P3096R12).
(I already implemented consteval blocks back in July.)

We also implemented some CWG issues that had been approved in Kona;
e.g., CWG 3101, 3109, 3111, 3115, 3117.

All metafunctions are implemented in this patch.

The feature needs to be enabled by -std=c++26 -freflection.

Some stats: this patch is over 51,200 LOC which were written in ~335
commits.  It comes with over 400 tests with 11,722 static_asserts.
But we are far from done: we still have about 50 TODOs and FIXMEs in
the code.  I am certain there are a number of other infelicities and
I'm going to work on tying up these loose ends in stage3 and GCC 17.

I've been lucky to work on such an interesting project and to be able
to work with some remarkable people.  I'd like to thank:
Jakub Jelinek, whose efforts can only be described as heroic and who
never ceases to amaze me even after nearly 15 years of working together,
he implemented many difficult metafunctions, annotations, mangling,
converted our metafunction dispatch to using gperf, and so on and on;
Jonathan Wakely for his generous & impeccable advice even at odd hours;
Dan Katz for his work on the Reflection papers, writing Reflection tests
for clang++ (many of which I've stolen^Wused), for his advice, bug reports,
and generally cheering me on; Jason Merrill for his guidance and, in fact,
encouraging me to take on this project in the first place; Michael Levine,
Valentyn Yukhymenko, and Alex Yesmanchyk for their nice contributions to
Reflection; and Tomasz KamiƄski for providing test cases and answering my
C++ questions.

        PR c++/120775

gcc/ChangeLog:

        * attribs.cc (decl_attributes): Check ATTR_UNIQUE_VALUE_P.
        (attribute_value_equal): Return true if either attribute is
        ATTR_UNIQUE_VALUE_P.
        (merge_attributes): Handle lists with ATTR_UNIQUE_VALUE_P values.
        * cgraphbuild.cc: Include "langhooks.h".
        (pass_build_cgraph_edges::execute): Don't finalize_decl compile-only
        variables.
        * doc/invoke.texi: Document -freflection.
        * dwarf2out.cc: New meta_type_die static.
        (is_cxx_meta_type): New.
        (is_base_type): Return false for is_cxx_meta_type.
        (gen_type_die_with_usage): Handle is_cxx_meta_type.
        * langhooks-def.h (LANG_HOOKS_COMPILE_ONLY_P): Define.
        (lhd_end_section): Add LANG_HOOKS_COMPILE_ONLY_P.
        * langhooks.h (struct lang_hooks): Add new compile_only_p
        langhook.
        * toplev.cc (wrapup_global_declaration_2): Return false for
        compile-only variables.
        * tree-core.h (struct tree_base): Update a comment.
        * tree.h (ATTR_UNIQUE_VALUE_P): Define.
        * varpool.cc: Include "langhooks.h".
        (varpool_node::assemble_decl): Return false for compile-only variables.

gcc/c-family/ChangeLog:

        * c-attribs.cc (attribute_takes_identifier_p): Return false for C++
        annotations.  Handle "old parm name".
        * c-cppbuiltin.cc (c_cpp_builtins): Define __cpp_impl_reflection.
        * c.opt (freflection): New.

gcc/cp/ChangeLog:

        * Make-lang.in: Add cp/reflect.o.  Add a rule for cp/metafns.h.
        * call.cc (build_call_a): Check metafunction_p.
        (build_new_op): Return error_mark_node when a type is null.
        * config-lang.in: Add reflect.cc.
        * constexpr.cc (constexpr_global_ctx): Add consteval_block and
        metafns_called members.  Initialize them.
        (cxx_constexpr_quiet_p): New.
        (cxx_constexpr_manifestly_const_eval): New.
        (cxx_constexpr_caller): New.
        (cxx_constexpr_consteval_block): New.
        (enum value_cat): Move into cp-tree.h.
        (cxx_eval_constant_expression): Move the declaration into cp-tree.h.
        No longer static.  Handle REFLECT_EXPR.  Handle conversion of
        a reflection to the meta::info type.
        (cxx_eval_cxa_builtin_fn): Override current_function_decl.
        (cxx_eval_builtin_function_call): Handle __builtin_is_string_literal.
        (is_std_allocator): Also check __new_allocator.
        (is_std_allocator_allocate): No longer static.
        (cxa_allocate_and_throw_exception): New.
        (cxx_eval_call_expression): Handle metafunctions.  Maybe set
        metafns_called.
        (reduced_constant_expression_p): Handle REFLECT_EXPR.
        (cxx_eval_binary_expression): Use compare_reflections for comparing
        reflections.
        (find_immediate_fndecl): Don't walk REFLECT_EXPR_P.
        (cxx_eval_outermost_constant_expr): Set global_ctx.consteval_block.
        Don't walk REFLECT_EXPR_P with find_immediate_fndecl.  Detect
        consteval-only smuggling.
        (potential_constant_expression_1): Handle REFLECT_EXPR and SPLICE_EXPR.
        * constraint.cc (diagnose_trait_expr): Add CPTK_IS_CONSTEVAL_ONLY case.
        * cp-gimplify.cc (immediate_escalating_function_p): No longer static.
        (promote_function_to_consteval): Likewise.
        (cp_gimplify_expr): Detect any surviving consteval-only expressions.
        Handle CP_BUILT_IN_IS_STRING_LITERAL.
        (wipe_consteval_only_r): New.
        (cp_fold_immediate_r): Detect invalid uses of consteval-only types.
        Resolve any remaining TEMPLATE_ID_EXPRs.  Clear consteval-only
        DECL_EXPRs.
        (cp_genericize_r): Wipe consteval-only vars from BIND_EXPR_VARS and
        BLOCK_VARS.
        * cp-objcp-common.cc (cp_common_init_ts): Mark META_TYPE, SPLICE_SCOPE,
        SPLICE_EXPR, and REFLECT_EXPR.
        * cp-objcp-common.h (LANG_HOOKS_COMPILE_ONLY_P): Define.
        * cp-trait.def (IS_CONSTEVAL_ONLY): New trait.
        * cp-tree.def (REFLECT_EXPR, META_TYPE, SPLICE_EXPR, SPLICE_SCOPE): New
        trees.
        * cp-tree.h (enum cp_tree_index): Add CPTI_ANNOTATION_IDENTIFIER,
        CPTI_STD_META, and CPTI_META_INFO_TYPE.
        (std_meta_node): Define.
        (meta_info_type_node): Define.
        (annotation_identifier): Define.
        (REFLECTION_TYPE_P): Define.
        (REFLECT_EXPR_P): Define.
        (REFLECT_EXPR_HANDLE): Define.
        (enum reflect_kind): New.
        (REFLECT_EXPR_KIND): Define.
        (SPLICE_EXPR_EXPRESSION_P): Define.
        (SET_SPLICE_EXPR_EXPRESSION_P): Define.
        (SPLICE_EXPR_MEMBER_ACCESS_P): Define.
        (SET_SPLICE_EXPR_MEMBER_ACCESS_P): Define.
        (SPLICE_EXPR_ADDRESS_P): Define.
        (SET_SPLICE_EXPR_ADDRESS_P): Define.
        (SPLICE_SCOPE_EXPR): Define.
        (SPLICE_SCOPE_TYPE_P): Define.
        (WILDCARD_TYPE_P): Include SPLICE_SCOPE.
        (DECL_NAMESPACE_STD_META_P): Define.
        (SCALAR_TYPE_P): Include REFLECTION_TYPE_P.
        (ENUM_BEING_DEFINED_P): Define.
        (OLD_PARM_DECL_P): Define.
        (MULTIPLE_NAMES_PARM_P): Define.
        (cp_preserve_using_decl): Declare.
        (DEF_OPERATOR, DEF_ASSN_OPERATOR): Include META.
        (struct ovl_op_info_t): Add meta_name member.
        (enum cp_built_in_function): Add CP_BUILT_IN_IS_STRING_LITERAL.
        (current_function_decl_without_access_scope): Declare.
        (dependent_namespace_p): Declare.
        (convert_reflect_constant_arg): Declare.
        (finish_base_specifier): Adjust declaration.
        (fold_builtin_is_string_literal): Declare.
        (finish_class_member_access_expr): Adjust declaration.
        (immediate_escalating_function_p): Declare.
        (promote_function_to_consteval): Declare.
        (is_std_allocator_allocate): Declare.
        (cxa_allocate_and_throw_exception): Declare.
        (enum value_cat): Define.
        (cxx_eval_constant_expression): Declare.
        (cxx_constexpr_quiet_p): Declare.
        (cxx_constexpr_manifestly_const_eval): Declare.
        (cxx_constexpr_caller): Declare.
        (cxx_constexpr_consteval_block): Declare.
        (init_reflection): Declare.
        (metafunction_p): Declare.
        (process_metafunction): Declare.
        (get_reflection): Declare.
        (get_null_reflection): Declare.
        (splice): Declare.
        (check_out_of_consteval_use):
        (consteval_only_p): Declare.
        (compare_reflections): Declare.
        (valid_splice_type_p): Declare.
        (valid_splice_scope_p): Declare.
        (check_splice_expr): Declare.
        (make_splice_scope): Declare.
        (dependent_splice_p): Declare.
        (reflection_mangle_prefix): Declare.
        * cvt.cc (convert_to_void): Call check_out_of_consteval_use.
        * cxx-pretty-print.cc (cxx_pretty_printer::unary_expression): New
        REFLECT_EXPR case.
        (cxx_pretty_printer::expression): Likewise.
        (cxx_pretty_printer::simple_type_specifier): New META_TYPE case.
        (cxx_pretty_printer::type_id): Likewise.
        * decl.cc (duplicate_decls): Merge parameter names for Reflection.
        Maybe set OLD_PARM_DECL_P.
        (initialize_predefined_identifiers): Add "annotation ".
        (cxx_init_decl_processing): Initialize std_meta_node.  Add
        __builtin_is_string_literal.  Call init_reflection.
        (maybe_commonize_var): Do nothing for consteval_only_p.
        (check_initializer): Default-initialize std::meta::info.
        (make_rtl_for_nonlocal_decl): Do nothing for consteval_only_p.
        (cp_finish_decl): Call check_out_of_consteval_use.  Don't go
        creating a varpool node for consteval_only_p.  Implement CWG 3115.
        (get_tuple_size): Check the instantiation instead of the type.
        (xref_basetypes): Stitch annotations onto BINFO_BASE_ACCESSES.
        (finish_enum_value_list): Clear ENUM_BEING_DEFINED_P.
        (finish_function): Implement CWG 3115.
        * decl2.cc (is_late_template_attribute): Handle all annotations as
        late.
        (cp_check_const_attributes): Don't handle annotations here.
        (maybe_make_one_only): Do nothing for consteval_only_p.
        (mark_needed): Likewise.
        (min_vis_expr_r): Handle reflections.
        (prune_vars_needing_no_initialization): Skip consteval_only_p.
        (no_linkage_error): Return early for metafunctions.
        (c_parse_final_cleanups): Avoid complaining about metafunctions.
        * error.cc (dump_type): New cases for CONST_DECL, META_TYPE, and
        SPLICE_SCOPE.
        (dump_type_prefix): New cases for META_TYPE and SPLICE_SCOPE.
        (dump_type_suffix): Likewise.
        (dump_decl): Dump SPLICE_EXPR.
        (dump_expr): Dump REFLECT_EXPR and SPLICE_EXPR.
        * init.cc (build_zero_init_1): Build a null reflection value.
        (perform_member_init): Call check_out_of_consteval_use.
        * lex.cc (DEF_OPERATOR, OPERATOR_TRANSITION): Update defines.
        * mangle.cc (write_type): Mangle META_TYPE.
        (write_expression): Handle REFLECT_EXPR.
        (write_reflection): New.
        (write_template_arg_literal): New REFLECT_EXPR case.
        (write_template_arg): Handle REFLECT_EXPR.
        * module.cc (trees_out::type_node): Handle META_TYPE.
        (trees_in::tree_node): Likewise.
        * name-lookup.cc (name_lookup::adl_type): std::meta is an associated
        namespace of std::meta::info.
        (strip_using_decl): Don't strip when cp_preserve_using_decl.
        (handle_namespace_attrs): Handle annotations.
        (do_namespace_alias): Cope with SPLICE_EXPR.
        (lookup_qualified_name): When cp_preserve_using_decl, don't do
        OVL_FUNCTION.
        (finish_using_directive): Detect annotations on using directive.
        * operators.def: Update for META_NAME.
        * parser.cc: New cp_preserve_using_decl global.
        (enum required_token): Add RT_CLOSE_SPLICE.
        (get_required_cpp_ttype): Return CPP_CLOSE_SPLICE for RT_CLOSE_SPLICE.
        (cp_parser_next_tokens_start_splice_type_spec_p): New.
        (cp_parser_next_tokens_start_splice_scope_spec_p): New.
        (cp_parser_splice_specifier): New.
        (cp_parser_splice_type_specifier): New.
        (cp_parser_splice_expression): New.
        (cp_parser_splice_scope_specifier): New.
        (cp_parser_skip_to_closing_token): New.
        (cp_parser_splice_spec_is_nns_p): New.
        (cp_parser_primary_expression): Handle CPP_OPEN_SPLICE.  Give an
        error for ^^ outside reflection.
        (cp_parser_unqualified_id): Allow r.~typename [:R:].
        (cp_parser_nested_name_specifier_opt): Cope with splice-scope-specifier.
        (cp_parser_qualifying_entity): Parse splice-scope-specifier.
        (cp_parser_postfix_expression): Deal with [: :] after a typename.
        (cp_parser_postfix_dot_deref_expression): Maybe parse splice-expression.
        (cp_parser_reflection_name): New.
        (cp_parser_reflect_expression): New.
        (cp_parser_unary_expression): Parse reflect-expression.
        (cp_parser_declaration): Parse splice-scope-specifier.
        (cp_parser_decomposition_declaration): Detect annotations on structured
        bindings.
        (cp_parser_decltype_expr): Parse splice-expression.
        (cp_parser_template_id): New parsed_templ argument.  If it's nonnull,
        don't parse the template name.  Turn an assert into a condition.
        (cp_parser_type_specifier): Handle typename [: :].
        (cp_parser_simple_type_specifier): Parse splice-type-specifier.
        (cp_parser_enum_specifier): Set ENUM_BEING_DEFINED_P.
        (cp_parser_namespace_alias_definition): Parse splice-specifier.
        (cp_parser_using_directive): Likewise.
        (cp_parser_base_specifier): Handle annotations.  Maybe give an error for
        splice-scope-specifier.  Parse splice-type-specifier.  Pass annotations
        to finish_base_specifier.
        (cp_parser_std_attribute_list): Detect mixing annotations and attributes
        in the same list.
        (cp_parser_annotation_list): New.
        (cp_parser_std_attribute_spec): Parse annotations.
        (cp_parser_type_requirement): Parse splice-type-specifier.
        (cp_parser_lookup_name): Also consider dependent namespaces.  Don't
        call check_accessibility_of_qualified_id for USING_DECLs.
        (cp_parser_required_error): Handle RT_CLOSE_SPLICE.
        * pt.cc (current_function_decl_without_access_scope): New.
        (verify_unstripped_args_1): REFLECT_EXPR_P is OK.
        (iterative_hash_template_arg): Handle REFLECT_EXPR.
        (convert_nontype_argument): Maybe give an error for REFLECTION_TYPE_P.
        (for_each_template_parm_r): Handle SPLICE_SCOPE.
        (instantiate_class_template): Handle annotations.
        (tsubst_pack_index): Make static.
        (tsubst_splice_scope): New.
        (tsubst): New META_TYPE case.  Handle a splice-specifier that expanded
        into a NAMESPACE_DECL.  Handle SPLICE_SCOPE.
        (tsubst_scope): Handle dependent namespaces.
        (tsubst_qualified_id): Check dependent_namespace_p.
        (tsubst_lambda_expr): Set LAMBDA_EXPR_CONSTEVAL_BLOCK_P.
        (tsubst_expr): Handle [:X:]<arg> which can expand to something that is
        not a template function.  Allow dependent_splice_p in an assert.
        <case NAMESPACE_DECL>: RECUR on dependent_namespace_p.
        Handle REFLECT_EXPR and SPLICE_EXPR.
        (unify): Handle META_TYPE.
        (tsubst_enum): Set ENUM_BEING_DEFINED_P.
        (dependent_type_p_r): A splice-scope-specifier is dependent.
        (dependent_namespace_p): New.
        (value_dependent_expression_p): Handle REFLECT_EXPR.  Also handle
        [meta.reflection.access.context]/8.
        (type_dependent_expression_p): REFLECT_EXPR_P is not type-dependent.
        (convert_reflect_constant_arg): New.
        * search.cc (check_final_overrider): Adjust for CWG 3117.
        * semantics.cc (finish_base_specifier): Handle annotations.
        (finish_id_expression_1): Check dependent_namespace_p.
        (fold_builtin_is_string_literal): New.
        (trait_expr_value): Handle CPTK_IS_CONSTEVAL_ONLY.
        (finish_trait_expr): Likewise.
        * tree.cc (handle_annotation_attribute): New.
        (builtin_valid_in_constant_expr_p): Handle
        CP_BUILT_IN_IS_STRING_LITERAL.
        (cp_tree_equal): Handle comparing REFLECT_EXPRs.
        (internal_attributes): Add "annotation ".
        * typeck.cc (finish_class_member_access_expr): New splice_p argument.
        Handle dependent splices.  Handle BASELINKs in a SCOPE_REF.  Implement
        splicing a base class subobject.  Access protection doesn't apply for
        splice-expressions.
        (cp_build_binary_op): Handle comparing std::meta::infos.
        (check_return_expr): Call check_out_of_consteval_use.
        * metafns.gperf: New file.
        * metafns.h: New file.
        * reflect.cc: New file.

libcc1/ChangeLog:

        * libcp1plugin.cc (start_class_def): Update the call to
        finish_base_specifier.

libcpp/ChangeLog:

        * charset.cc (_cpp_destroy_iconv): Destroy narrow_cset_desc and
        utf8_cset_desc.
        (cpp_translate_string): New.
        (cpp_valid_identifier): New.
        * include/cpplib.h: Add OPEN_SPLICE, CLOSE_SPLICE, and REFLECT_OP to
        TTYPE_TABLE.
        (cpp_translate_string): Declare.
        (cpp_valid_identifier): Declare.
        * internal.h (struct cpp_reader): Add reverse_narrow_cset_desc and
        reverse_utf8_cset_desc fields.
        * lex.cc (_cpp_lex_direct): Emit CPP_CLOSE_SPLICE, CPP_REFLECT_OP,
        and CPP_OPEN_SPLICE tokens.

libstdc++-v3/ChangeLog:

        * include/Makefile.am (std_headers): Add ${std_srcdir}/meta.
        * include/Makefile.in: Regenerate.
        * include/bits/iterator_concepts.h (std::ranges::__access::__begin): Add
        constexpr.
        * include/bits/version.def (reflection): New.
        * include/bits/version.h: Regenerate.
        * include/precompiled/stdc++.h: Include <meta> for C++26.
        * include/std/meta: New file.
        * include/std/type_traits (std::is_reflection): New trait.
        (std::is_fundamental): Include is_reflection for C++26 -freflection.
        (std::is_reflection_v): New variable template.
        (std::is_consteval_only): New trait.
        (std::is_consteval_only_v): New variable template.
        * src/c++23/std.cc.in: Add <meta> exports.
        * testsuite/20_util/variable_templates_for_traits.cc: Add -freflection 
as
        dg-additional-options for C++26.  Add std::is_reflection_v test in that 
case.
        * 
testsuite/20_util/is_consteval_only/requirements/explicit_instantiation.cc: New 
test.
        * testsuite/20_util/is_consteval_only/requirements/typedefs.cc: New 
test.
        * testsuite/20_util/is_consteval_only/value.cc: New test.
        * 
testsuite/20_util/is_reflection/requirements/explicit_instantiation.cc: New 
test.
        * testsuite/20_util/is_reflection/requirements/typedefs.cc: New test.
        * testsuite/20_util/is_reflection/value.cc: New test.

gcc/testsuite/ChangeLog:

        * g++.dg/DRs/dr2581-1.C: Add -freflection.
        * g++.dg/DRs/dr2581-2.C: Likewise.
        * g++.dg/reflect/access_context1.C: New test.
        * g++.dg/reflect/access_context2.C: New test.
        * g++.dg/reflect/adl1.C: New test.
        * g++.dg/reflect/alignment_of1.C: New test.
        * g++.dg/reflect/alignment_of2.C: New test.
        * g++.dg/reflect/annotations1.C: New test.
        * g++.dg/reflect/annotations2.C: New test.
        * g++.dg/reflect/annotations3.C: New test.
        * g++.dg/reflect/annotations4.C: New test.
        * g++.dg/reflect/annotations5.C: New test.
        * g++.dg/reflect/anon1.C: New test.
        * g++.dg/reflect/anon2.C: New test.
        * g++.dg/reflect/anon3.C: New test.
        * g++.dg/reflect/bases_of1.C: New test.
        * g++.dg/reflect/bases_of2.C: New test.
        * g++.dg/reflect/bases_of3.C: New test.
        * g++.dg/reflect/bit_size_of1.C: New test.
        * g++.dg/reflect/bitfield1.C: New test.
        * g++.dg/reflect/can_substitute1.C: New test.
        * g++.dg/reflect/class1.C: New test.
        * g++.dg/reflect/class2.C: New test.
        * g++.dg/reflect/common_reference1.C: New test.
        * g++.dg/reflect/common_type1.C: New test.
        * g++.dg/reflect/compare1.C: New test.
        * g++.dg/reflect/compare2.C: New test.
        * g++.dg/reflect/compare3.C: New test.
        * g++.dg/reflect/compare4.C: New test.
        * g++.dg/reflect/compare5.C: New test.
        * g++.dg/reflect/compare6.C: New test.
        * g++.dg/reflect/compare7.C: New test.
        * g++.dg/reflect/compare8.C: New test.
        * g++.dg/reflect/compare9.C: New test.
        * g++.dg/reflect/compat1.C: New test.
        * g++.dg/reflect/complete1.C: New test.
        * g++.dg/reflect/constant_of1.C: New test.
        * g++.dg/reflect/constant_of2.C: New test.
        * g++.dg/reflect/constant_of3.C: New test.
        * g++.dg/reflect/constant_of4.C: New test.
        * g++.dg/reflect/constant_of5.C: New test.
        * g++.dg/reflect/constant_of6.C: New test.
        * g++.dg/reflect/constant_of7.C: New test.
        * g++.dg/reflect/constant_of8.C: New test.
        * g++.dg/reflect/constant_of9.C: New test.
        * g++.dg/reflect/crash1.C: New test.
        * g++.dg/reflect/crash10.C: New test.
        * g++.dg/reflect/crash11.C: New test.
        * g++.dg/reflect/crash12.C: New test.
        * g++.dg/reflect/crash13.C: New test.
        * g++.dg/reflect/crash14.C: New test.
        * g++.dg/reflect/crash15.C: New test.
        * g++.dg/reflect/crash16.C: New test.
        * g++.dg/reflect/crash17.C: New test.
        * g++.dg/reflect/crash18.C: New test.
        * g++.dg/reflect/crash2.C: New test.
        * g++.dg/reflect/crash3.C: New test.
        * g++.dg/reflect/crash4.C: New test.
        * g++.dg/reflect/crash5.C: New test.
        * g++.dg/reflect/crash6.C: New test.
        * g++.dg/reflect/crash7.C: New test.
        * g++.dg/reflect/crash8.C: New test.
        * g++.dg/reflect/crash9.C: New test.
        * g++.dg/reflect/data_member_spec1.C: New test.
        * g++.dg/reflect/data_member_spec2.C: New test.
        * g++.dg/reflect/data_member_spec3.C: New test.
        * g++.dg/reflect/data_member_spec4.C: New test.
        * g++.dg/reflect/dealias1.C: New test.
        * g++.dg/reflect/dealias2.C: New test.
        * g++.dg/reflect/define_aggregate1.C: New test.
        * g++.dg/reflect/define_aggregate2.C: New test.
        * g++.dg/reflect/define_aggregate3.C: New test.
        * g++.dg/reflect/define_aggregate4.C: New test.
        * g++.dg/reflect/define_aggregate5.C: New test.
        * g++.dg/reflect/define_static_array1.C: New test.
        * g++.dg/reflect/define_static_array2.C: New test.
        * g++.dg/reflect/define_static_object1.C: New test.
        * g++.dg/reflect/define_static_string1.C: New test.
        * g++.dg/reflect/dep1.C: New test.
        * g++.dg/reflect/dep10.C: New test.
        * g++.dg/reflect/dep11.C: New test.
        * g++.dg/reflect/dep2.C: New test.
        * g++.dg/reflect/dep3.C: New test.
        * g++.dg/reflect/dep4.C: New test.
        * g++.dg/reflect/dep5.C: New test.
        * g++.dg/reflect/dep6.C: New test.
        * g++.dg/reflect/dep7.C: New test.
        * g++.dg/reflect/dep8.C: New test.
        * g++.dg/reflect/dep9.C: New test.
        * g++.dg/reflect/diag1.C: New test.
        * g++.dg/reflect/diag2.C: New test.
        * g++.dg/reflect/diag3.C: New test.
        * g++.dg/reflect/diag4.C: New test.
        * g++.dg/reflect/display_string_of1.C: New test.
        * g++.dg/reflect/eh1.C: New test.
        * g++.dg/reflect/eh2.C: New test.
        * g++.dg/reflect/eh3.C: New test.
        * g++.dg/reflect/eh4.C: New test.
        * g++.dg/reflect/eh5.C: New test.
        * g++.dg/reflect/eh6.C: New test.
        * g++.dg/reflect/eh7.C: New test.
        * g++.dg/reflect/eh8.C: New test.
        * g++.dg/reflect/eh9.C: New test.
        * g++.dg/reflect/enumerators_of1.C: New test.
        * g++.dg/reflect/error1.C: New test.
        * g++.dg/reflect/error2.C: New test.
        * g++.dg/reflect/error3.C: New test.
        * g++.dg/reflect/error4.C: New test.
        * g++.dg/reflect/error5.C: New test.
        * g++.dg/reflect/error6.C: New test.
        * g++.dg/reflect/error8.C: New test.
        * g++.dg/reflect/error9.C: New test.
        * g++.dg/reflect/expr1.C: New test.
        * g++.dg/reflect/expr10.C: New test.
        * g++.dg/reflect/expr11.C: New test.
        * g++.dg/reflect/expr12.C: New test.
        * g++.dg/reflect/expr13.C: New test.
        * g++.dg/reflect/expr2.C: New test.
        * g++.dg/reflect/expr3.C: New test.
        * g++.dg/reflect/expr4.C: New test.
        * g++.dg/reflect/expr5.C: New test.
        * g++.dg/reflect/expr6.C: New test.
        * g++.dg/reflect/expr7.C: New test.
        * g++.dg/reflect/expr8.C: New test.
        * g++.dg/reflect/expr9.C: New test.
        * g++.dg/reflect/extract1.C: New test.
        * g++.dg/reflect/extract2.C: New test.
        * g++.dg/reflect/extract3.C: New test.
        * g++.dg/reflect/extract4.C: New test.
        * g++.dg/reflect/extract5.C: New test.
        * g++.dg/reflect/extract6.C: New test.
        * g++.dg/reflect/extract7.C: New test.
        * g++.dg/reflect/extract8.C: New test.
        * g++.dg/reflect/extract9.C: New test.
        * g++.dg/reflect/feat1.C: New test.
        * g++.dg/reflect/feat2.C: New test.
        * g++.dg/reflect/has_c_language_linkage1.C: New test.
        * g++.dg/reflect/has_default_argument1.C: New test.
        * g++.dg/reflect/has_default_argument2.C: New test.
        * g++.dg/reflect/has_default_member_initializer1.C: New test.
        * g++.dg/reflect/has_ellipsis_parameter1.C: New test.
        * g++.dg/reflect/has_external_linkage1.C: New test.
        * g++.dg/reflect/has_external_linkage2.C: New test.
        * g++.dg/reflect/has_identifier1.C: New test.
        * g++.dg/reflect/has_internal_linkage1.C: New test.
        * g++.dg/reflect/has_internal_linkage2.C: New test.
        * g++.dg/reflect/has_linkage1.C: New test.
        * g++.dg/reflect/has_module_linkage1.C: New test.
        * g++.dg/reflect/has_module_linkage2.C: New test.
        * g++.dg/reflect/has_parent1.C: New test.
        * g++.dg/reflect/has_template_arguments1.C: New test.
        * g++.dg/reflect/has_template_arguments2.C: New test.
        * g++.dg/reflect/has_template_arguments3.C: New test.
        * g++.dg/reflect/has_template_arguments4.C: New test.
        * g++.dg/reflect/identifier_of1.C: New test.
        * g++.dg/reflect/identifier_of2.C: New test.
        * g++.dg/reflect/init1.C: New test.
        * g++.dg/reflect/init10.C: New test.
        * g++.dg/reflect/init11.C: New test.
        * g++.dg/reflect/init12.C: New test.
        * g++.dg/reflect/init13.C: New test.
        * g++.dg/reflect/init14.C: New test.
        * g++.dg/reflect/init15.C: New test.
        * g++.dg/reflect/init16.C: New test.
        * g++.dg/reflect/init17.C: New test.
        * g++.dg/reflect/init2.C: New test.
        * g++.dg/reflect/init3.C: New test.
        * g++.dg/reflect/init4.C: New test.
        * g++.dg/reflect/init5.C: New test.
        * g++.dg/reflect/init6.C: New test.
        * g++.dg/reflect/init7.C: New test.
        * g++.dg/reflect/init8.C: New test.
        * g++.dg/reflect/init9.C: New test.
        * g++.dg/reflect/is_accessible1.C: New test.
        * g++.dg/reflect/is_accessible2.C: New test.
        * g++.dg/reflect/is_alias_template1.C: New test.
        * g++.dg/reflect/is_assignment1.C: New test.
        * g++.dg/reflect/is_bit_field1.C: New test.
        * g++.dg/reflect/is_class_member1.C: New test.
        * g++.dg/reflect/is_class_template1.C: New test.
        * g++.dg/reflect/is_complete_type1.C: New test.
        * g++.dg/reflect/is_concept1.C: New test.
        * g++.dg/reflect/is_const1.C: New test.
        * g++.dg/reflect/is_consteval_only1.C: New test.
        * g++.dg/reflect/is_constructible_type1.C: New test.
        * g++.dg/reflect/is_constructible_type2.C: New test.
        * g++.dg/reflect/is_constructor_template1.C: New test.
        * g++.dg/reflect/is_constuctor1.C: New test.
        * g++.dg/reflect/is_conversion_function1.C: New test.
        * g++.dg/reflect/is_conversion_function_template1.C: New test.
        * g++.dg/reflect/is_copy_assignment1.C: New test.
        * g++.dg/reflect/is_copy_constructor1.C: New test.
        * g++.dg/reflect/is_data_member_spec1.C: New test.
        * g++.dg/reflect/is_default_constructor1.C: New test.
        * g++.dg/reflect/is_defaulted1.C: New test.
        * g++.dg/reflect/is_deleted1.C: New test.
        * g++.dg/reflect/is_destructor1.C: New test.
        * g++.dg/reflect/is_enumerable_type1.C: New test.
        * g++.dg/reflect/is_enumerator1.C: New test.
        * g++.dg/reflect/is_explicit1.C: New test.
        * g++.dg/reflect/is_explicit_object_parameter1.C: New test.
        * g++.dg/reflect/is_final1.C: New test.
        * g++.dg/reflect/is_function1.C: New test.
        * g++.dg/reflect/is_function2.C: New test.
        * g++.dg/reflect/is_function3.C: New test.
        * g++.dg/reflect/is_function_parameter1.C: New test.
        * g++.dg/reflect/is_function_parameter2.C: New test.
        * g++.dg/reflect/is_function_template1.C: New test.
        * g++.dg/reflect/is_function_template2.C: New test.
        * g++.dg/reflect/is_function_type1.C: New test.
        * g++.dg/reflect/is_literal_operator1.C: New test.
        * g++.dg/reflect/is_literal_operator_template1.C: New test.
        * g++.dg/reflect/is_lrvalue_reference_qualified1.C: New test.
        * g++.dg/reflect/is_move_assignment1.C: New test.
        * g++.dg/reflect/is_move_constructor1.C: New test.
        * g++.dg/reflect/is_mutable_member1.C: New test.
        * g++.dg/reflect/is_namespace1.C: New test.
        * g++.dg/reflect/is_namespace_alias1.C: New test.
        * g++.dg/reflect/is_namespace_member1.C: New test.
        * g++.dg/reflect/is_noexcept1.C: New test.
        * g++.dg/reflect/is_noexcept2.C: New test.
        * g++.dg/reflect/is_noexcept3.C: New test.
        * g++.dg/reflect/is_nonstatic_data_member1.C: New test.
        * g++.dg/reflect/is_object1.C: New test.
        * g++.dg/reflect/is_object2.C: New test.
        * g++.dg/reflect/is_operator_function1.C: New test.
        * g++.dg/reflect/is_operator_function_template1.C: New test.
        * g++.dg/reflect/is_override1.C: New test.
        * g++.dg/reflect/is_pure_virtual1.C: New test.
        * g++.dg/reflect/is_special_member_function1.C: New test.
        * g++.dg/reflect/is_static_member1.C: New test.
        * g++.dg/reflect/is_string_literal1.C: New test.
        * g++.dg/reflect/is_structured_binding1.C: New test.
        * g++.dg/reflect/is_structured_binding2.C: New test.
        * g++.dg/reflect/is_template1.C: New test.
        * g++.dg/reflect/is_template2.C: New test.
        * g++.dg/reflect/is_type1.C: New test.
        * g++.dg/reflect/is_type_alias1.C: New test.
        * g++.dg/reflect/is_type_alias2.C: New test.
        * g++.dg/reflect/is_type_alias3.C: New test.
        * g++.dg/reflect/is_user_declared1.C: New test.
        * g++.dg/reflect/is_user_provided1.C: New test.
        * g++.dg/reflect/is_variable1.C: New test.
        * g++.dg/reflect/is_variable_template1.C: New test.
        * g++.dg/reflect/is_virtual1.C: New test.
        * g++.dg/reflect/is_volatile1.C: New test.
        * g++.dg/reflect/lex1.C: New test.
        * g++.dg/reflect/lex2.C: New test.
        * g++.dg/reflect/mangle1.C: New test.
        * g++.dg/reflect/member-visibility1.C: New test.
        * g++.dg/reflect/member-visibility2.C: New test.
        * g++.dg/reflect/member1.C: New test.
        * g++.dg/reflect/member10.C: New test.
        * g++.dg/reflect/member11.C: New test.
        * g++.dg/reflect/member12.C: New test.
        * g++.dg/reflect/member13.C: New test.
        * g++.dg/reflect/member14.C: New test.
        * g++.dg/reflect/member15.C: New test.
        * g++.dg/reflect/member16.C: New test.
        * g++.dg/reflect/member2.C: New test.
        * g++.dg/reflect/member3.C: New test.
        * g++.dg/reflect/member4.C: New test.
        * g++.dg/reflect/member5.C: New test.
        * g++.dg/reflect/member6.C: New test.
        * g++.dg/reflect/member7.C: New test.
        * g++.dg/reflect/member8.C: New test.
        * g++.dg/reflect/member9.C: New test.
        * g++.dg/reflect/members_of1.C: New test.
        * g++.dg/reflect/members_of2.C: New test.
        * g++.dg/reflect/members_of3.C: New test.
        * g++.dg/reflect/metafn-ptr1.C: New test.
        * g++.dg/reflect/ns1.C: New test.
        * g++.dg/reflect/ns2.C: New test.
        * g++.dg/reflect/ns3.C: New test.
        * g++.dg/reflect/ns4.C: New test.
        * g++.dg/reflect/ns5.C: New test.
        * g++.dg/reflect/ns6.C: New test.
        * g++.dg/reflect/null1.C: New test.
        * g++.dg/reflect/null2.C: New test.
        * g++.dg/reflect/null3.C: New test.
        * g++.dg/reflect/null4.C: New test.
        * g++.dg/reflect/null5.C: New test.
        * g++.dg/reflect/object_of1.C: New test.
        * g++.dg/reflect/object_of2.C: New test.
        * g++.dg/reflect/odr1.C: New test.
        * g++.dg/reflect/offset_of1.C: New test.
        * g++.dg/reflect/operator_of1.C: New test.
        * g++.dg/reflect/override1.C: New test.
        * g++.dg/reflect/p2996-1.C: New test.
        * g++.dg/reflect/p2996-10.C: New test.
        * g++.dg/reflect/p2996-11.C: New test.
        * g++.dg/reflect/p2996-12.C: New test.
        * g++.dg/reflect/p2996-13.C: New test.
        * g++.dg/reflect/p2996-14.C: New test.
        * g++.dg/reflect/p2996-15.C: New test.
        * g++.dg/reflect/p2996-16.C: New test.
        * g++.dg/reflect/p2996-17.C: New test.
        * g++.dg/reflect/p2996-18.C: New test.
        * g++.dg/reflect/p2996-19.C: New test.
        * g++.dg/reflect/p2996-2.C: New test.
        * g++.dg/reflect/p2996-20.C: New test.
        * g++.dg/reflect/p2996-21.C: New test.
        * g++.dg/reflect/p2996-3.C: New test.
        * g++.dg/reflect/p2996-4.C: New test.
        * g++.dg/reflect/p2996-5.C: New test.
        * g++.dg/reflect/p2996-6.C: New test.
        * g++.dg/reflect/p2996-7.C: New test.
        * g++.dg/reflect/p2996-8.C: New test.
        * g++.dg/reflect/p2996-9.C: New test.
        * g++.dg/reflect/p3394-1.C: New test.
        * g++.dg/reflect/p3491-1.C: New test.
        * g++.dg/reflect/p3491-2.C: New test.
        * g++.dg/reflect/p3491-3.C: New test.
        * g++.dg/reflect/pack-index1.C: New test.
        * g++.dg/reflect/parameters_of1.C: New test.
        * g++.dg/reflect/parameters_of2.C: New test.
        * g++.dg/reflect/parameters_of3.C: New test.
        * g++.dg/reflect/parameters_of4.C: New test.
        * g++.dg/reflect/parameters_of5.C: New test.
        * g++.dg/reflect/parameters_of6.C: New test.
        * g++.dg/reflect/parent_of1.C: New test.
        * g++.dg/reflect/parm1.C: New test.
        * g++.dg/reflect/parm2.C: New test.
        * g++.dg/reflect/parm3.C: New test.
        * g++.dg/reflect/parm4.C: New test.
        * g++.dg/reflect/pr122634-1.C: New test.
        * g++.dg/reflect/pr122634-2.C: New test.
        * g++.dg/reflect/qrn1.C: New test.
        * g++.dg/reflect/qrn2.C: New test.
        * g++.dg/reflect/reflect_constant1.C: New test.
        * g++.dg/reflect/reflect_constant2.C: New test.
        * g++.dg/reflect/reflect_constant3.C: New test.
        * g++.dg/reflect/reflect_constant4.C: New test.
        * g++.dg/reflect/reflect_constant5.C: New test.
        * g++.dg/reflect/reflect_constant6.C: New test.
        * g++.dg/reflect/reflect_constant7.C: New test.
        * g++.dg/reflect/reflect_constant8.C: New test.
        * g++.dg/reflect/reflect_constant_array1.C: New test.
        * g++.dg/reflect/reflect_constant_array2.C: New test.
        * g++.dg/reflect/reflect_constant_string1.C: New test.
        * g++.dg/reflect/reflect_constant_string2.C: New test.
        * g++.dg/reflect/reflect_function1.C: New test.
        * g++.dg/reflect/reflect_function2.C: New test.
        * g++.dg/reflect/reflect_object1.C: New test.
        * g++.dg/reflect/reflect_object2.C: New test.
        * g++.dg/reflect/reflect_object3.C: New test.
        * g++.dg/reflect/reflect_object4.C: New test.
        * g++.dg/reflect/return_type_of1.C: New test.
        * g++.dg/reflect/serialize1.C: New test.
        * g++.dg/reflect/serialize2.C: New test.
        * g++.dg/reflect/size_of1.C: New test.
        * g++.dg/reflect/source_location_of1.C: New test.
        * g++.dg/reflect/splice1.C: New test.
        * g++.dg/reflect/splicing-base1.C: New test.
        * g++.dg/reflect/splicing-base2.C: New test.
        * g++.dg/reflect/splicing-base3.C: New test.
        * g++.dg/reflect/splicing-base4.C: New test.
        * g++.dg/reflect/storage_duration1.C: New test.
        * g++.dg/reflect/storage_duration2.C: New test.
        * g++.dg/reflect/storage_duration3.C: New test.
        * g++.dg/reflect/subobjects_of1.C: New test.
        * g++.dg/reflect/substitute1.C: New test.
        * g++.dg/reflect/substitute2.C: New test.
        * g++.dg/reflect/symbol_of1.C: New test.
        * g++.dg/reflect/symbol_of2.C: New test.
        * g++.dg/reflect/template_arguments_of1.C: New test.
        * g++.dg/reflect/template_arguments_of2.C: New test.
        * g++.dg/reflect/template_arguments_of3.C: New test.
        * g++.dg/reflect/template_of1.C: New test.
        * g++.dg/reflect/template_of2.C: New test.
        * g++.dg/reflect/template_of3.C: New test.
        * g++.dg/reflect/tuple1.C: New test.
        * g++.dg/reflect/tuple2.C: New test.
        * g++.dg/reflect/type1.C: New test.
        * g++.dg/reflect/type10.C: New test.
        * g++.dg/reflect/type2.C: New test.
        * g++.dg/reflect/type3.C: New test.
        * g++.dg/reflect/type4.C: New test.
        * g++.dg/reflect/type5.C: New test.
        * g++.dg/reflect/type6.C: New test.
        * g++.dg/reflect/type7.C: New test.
        * g++.dg/reflect/type8.C: New test.
        * g++.dg/reflect/type9.C: New test.
        * g++.dg/reflect/type_of1.C: New test.
        * g++.dg/reflect/type_of2.C: New test.
        * g++.dg/reflect/type_rels1.C: New test.
        * g++.dg/reflect/type_trait1.C: New test.
        * g++.dg/reflect/type_trait10.C: New test.
        * g++.dg/reflect/type_trait11.C: New test.
        * g++.dg/reflect/type_trait12.C: New test.
        * g++.dg/reflect/type_trait13.C: New test.
        * g++.dg/reflect/type_trait2.C: New test.
        * g++.dg/reflect/type_trait3.C: New test.
        * g++.dg/reflect/type_trait4.C: New test.
        * g++.dg/reflect/type_trait5.C: New test.
        * g++.dg/reflect/type_trait6.C: New test.
        * g++.dg/reflect/type_trait8.C: New test.
        * g++.dg/reflect/type_trait9.C: New test.
        * g++.dg/reflect/u8display_string_of1.C: New test.
        * g++.dg/reflect/u8identifier_of1.C: New test.
        * g++.dg/reflect/u8symbol_of1.C: New test.
        * g++.dg/reflect/underlying_type1.C: New test.
        * g++.dg/reflect/value_or_object1.C: New test.
        * g++.dg/reflect/variable_of1.C: New test.
        * g++.dg/reflect/variable_of2.C: New test.
        * g++.dg/reflect/variant1.C: New test.
        * g++.dg/reflect/variant2.C: New test.
        * g++.dg/reflect/vector1.C: New test.
        * g++.dg/reflect/visibility1.C: New test.

Co-authored-by: Jakub Jelinek <[email protected]>
Signed-off-by: Valentyn Yukhymenko <[email protected]>
Signed-off-by: Alex Yesmanchyk <[email protected]>
Signed-off-by: Michael Levine <[email protected]>
---
 gcc/attribs.cc                                |   72 +-
 gcc/c-family/c-attribs.cc                     |   14 +-
 gcc/c-family/c-cppbuiltin.cc                  |    4 +
 gcc/c-family/c.opt                            |    4 +
 gcc/cgraphbuild.cc                            |    4 +-
 gcc/cp/Make-lang.in                           |   20 +-
 gcc/cp/call.cc                                |    9 +-
 gcc/cp/config-lang.in                         |    2 +-
 gcc/cp/constexpr.cc                           |  232 +-
 gcc/cp/constraint.cc                          |    3 +
 gcc/cp/cp-gimplify.cc                         |  107 +-
 gcc/cp/cp-objcp-common.cc                     |    4 +
 gcc/cp/cp-objcp-common.h                      |    2 +
 gcc/cp/cp-trait.def                           |    1 +
 gcc/cp/cp-tree.def                            |   18 +
 gcc/cp/cp-tree.h                              |  188 +-
 gcc/cp/cvt.cc                                 |    6 +
 gcc/cp/cxx-pretty-print.cc                    |   20 +
 gcc/cp/decl.cc                                |  194 +-
 gcc/cp/decl2.cc                               |   99 +-
 gcc/cp/error.cc                               |   45 +-
 gcc/cp/init.cc                                |    7 +
 gcc/cp/lex.cc                                 |   10 +-
 gcc/cp/mangle.cc                              |  147 +-
 gcc/cp/metafns.gperf                          |  643 ++
 gcc/cp/metafns.h                              | 1136 +++
 gcc/cp/module.cc                              |    9 +
 gcc/cp/name-lookup.cc                         |   34 +-
 gcc/cp/operators.def                          |  151 +-
 gcc/cp/parser.cc                              | 1189 ++-
 gcc/cp/pt.cc                                  |  337 +-
 gcc/cp/reflect.cc                             | 8685 +++++++++++++++++
 gcc/cp/search.cc                              |   14 +-
 gcc/cp/semantics.cc                           |   74 +-
 gcc/cp/tree.cc                                |   64 +-
 gcc/cp/typeck.cc                              |   45 +-
 gcc/doc/invoke.texi                           |    6 +-
 gcc/dwarf2out.cc                              |   31 +
 gcc/langhooks-def.h                           |    4 +-
 gcc/langhooks.h                               |    5 +
 gcc/testsuite/g++.dg/DRs/dr2581-1.C           |    4 +-
 gcc/testsuite/g++.dg/DRs/dr2581-2.C           |    4 +-
 .../g++.dg/reflect/access_context1.C          |  175 +
 .../g++.dg/reflect/access_context2.C          |   15 +
 gcc/testsuite/g++.dg/reflect/adl1.C           |   16 +
 gcc/testsuite/g++.dg/reflect/alignment_of1.C  |  165 +
 gcc/testsuite/g++.dg/reflect/alignment_of2.C  |   27 +
 gcc/testsuite/g++.dg/reflect/annotations1.C   |  139 +
 gcc/testsuite/g++.dg/reflect/annotations2.C   |   44 +
 gcc/testsuite/g++.dg/reflect/annotations3.C   |  174 +
 gcc/testsuite/g++.dg/reflect/annotations4.C   |   79 +
 gcc/testsuite/g++.dg/reflect/annotations5.C   |   30 +
 gcc/testsuite/g++.dg/reflect/anon1.C          |   50 +
 gcc/testsuite/g++.dg/reflect/anon2.C          |   43 +
 gcc/testsuite/g++.dg/reflect/anon3.C          |   49 +
 gcc/testsuite/g++.dg/reflect/bases_of1.C      |  188 +
 gcc/testsuite/g++.dg/reflect/bases_of2.C      |   73 +
 gcc/testsuite/g++.dg/reflect/bases_of3.C      |   88 +
 gcc/testsuite/g++.dg/reflect/bit_size_of1.C   |  125 +
 gcc/testsuite/g++.dg/reflect/bitfield1.C      |   12 +
 .../g++.dg/reflect/can_substitute1.C          |  200 +
 gcc/testsuite/g++.dg/reflect/class1.C         |   15 +
 gcc/testsuite/g++.dg/reflect/class2.C         |   27 +
 .../g++.dg/reflect/common_reference1.C        |   61 +
 gcc/testsuite/g++.dg/reflect/common_type1.C   |  151 +
 gcc/testsuite/g++.dg/reflect/compare1.C       |   38 +
 gcc/testsuite/g++.dg/reflect/compare2.C       |   17 +
 gcc/testsuite/g++.dg/reflect/compare3.C       |   24 +
 gcc/testsuite/g++.dg/reflect/compare4.C       |   27 +
 gcc/testsuite/g++.dg/reflect/compare5.C       |    8 +
 gcc/testsuite/g++.dg/reflect/compare6.C       |   12 +
 gcc/testsuite/g++.dg/reflect/compare7.C       |   20 +
 gcc/testsuite/g++.dg/reflect/compare8.C       |   67 +
 gcc/testsuite/g++.dg/reflect/compare9.C       |   25 +
 gcc/testsuite/g++.dg/reflect/compat1.C        |   13 +
 gcc/testsuite/g++.dg/reflect/complete1.C      |   54 +
 gcc/testsuite/g++.dg/reflect/constant_of1.C   |   40 +
 gcc/testsuite/g++.dg/reflect/constant_of2.C   |   87 +
 gcc/testsuite/g++.dg/reflect/constant_of3.C   |   60 +
 gcc/testsuite/g++.dg/reflect/constant_of4.C   |   50 +
 gcc/testsuite/g++.dg/reflect/constant_of5.C   |   86 +
 gcc/testsuite/g++.dg/reflect/constant_of6.C   |   26 +
 gcc/testsuite/g++.dg/reflect/constant_of7.C   |   54 +
 gcc/testsuite/g++.dg/reflect/constant_of8.C   |   10 +
 gcc/testsuite/g++.dg/reflect/constant_of9.C   |    9 +
 gcc/testsuite/g++.dg/reflect/crash1.C         |   15 +
 gcc/testsuite/g++.dg/reflect/crash10.C        |   11 +
 gcc/testsuite/g++.dg/reflect/crash11.C        |   23 +
 gcc/testsuite/g++.dg/reflect/crash12.C        |    8 +
 gcc/testsuite/g++.dg/reflect/crash13.C        |   15 +
 gcc/testsuite/g++.dg/reflect/crash14.C        |    7 +
 gcc/testsuite/g++.dg/reflect/crash15.C        |    8 +
 gcc/testsuite/g++.dg/reflect/crash16.C        |   43 +
 gcc/testsuite/g++.dg/reflect/crash17.C        |   29 +
 gcc/testsuite/g++.dg/reflect/crash18.C        |    6 +
 gcc/testsuite/g++.dg/reflect/crash2.C         |   25 +
 gcc/testsuite/g++.dg/reflect/crash3.C         |    8 +
 gcc/testsuite/g++.dg/reflect/crash4.C         |   15 +
 gcc/testsuite/g++.dg/reflect/crash5.C         |   14 +
 gcc/testsuite/g++.dg/reflect/crash6.C         |   21 +
 gcc/testsuite/g++.dg/reflect/crash7.C         |   22 +
 gcc/testsuite/g++.dg/reflect/crash8.C         |   11 +
 gcc/testsuite/g++.dg/reflect/crash9.C         |   10 +
 .../g++.dg/reflect/data_member_spec1.C        |  119 +
 .../g++.dg/reflect/data_member_spec2.C        |  113 +
 .../g++.dg/reflect/data_member_spec3.C        |   29 +
 .../g++.dg/reflect/data_member_spec4.C        |   29 +
 gcc/testsuite/g++.dg/reflect/dealias1.C       |   36 +
 gcc/testsuite/g++.dg/reflect/dealias2.C       |   14 +
 .../g++.dg/reflect/define_aggregate1.C        |  108 +
 .../g++.dg/reflect/define_aggregate2.C        |   44 +
 .../g++.dg/reflect/define_aggregate3.C        |  217 +
 .../g++.dg/reflect/define_aggregate4.C        |  225 +
 .../g++.dg/reflect/define_aggregate5.C        |   25 +
 .../g++.dg/reflect/define_static_array1.C     |   91 +
 .../g++.dg/reflect/define_static_array2.C     |   24 +
 .../g++.dg/reflect/define_static_object1.C    |   18 +
 .../g++.dg/reflect/define_static_string1.C    |  133 +
 gcc/testsuite/g++.dg/reflect/dep1.C           |   14 +
 gcc/testsuite/g++.dg/reflect/dep10.C          |   15 +
 gcc/testsuite/g++.dg/reflect/dep11.C          |   18 +
 gcc/testsuite/g++.dg/reflect/dep2.C           |   36 +
 gcc/testsuite/g++.dg/reflect/dep3.C           |   33 +
 gcc/testsuite/g++.dg/reflect/dep4.C           |   24 +
 gcc/testsuite/g++.dg/reflect/dep5.C           |   29 +
 gcc/testsuite/g++.dg/reflect/dep6.C           |   20 +
 gcc/testsuite/g++.dg/reflect/dep7.C           |   23 +
 gcc/testsuite/g++.dg/reflect/dep8.C           |   70 +
 gcc/testsuite/g++.dg/reflect/dep9.C           |   40 +
 gcc/testsuite/g++.dg/reflect/diag1.C          |   25 +
 gcc/testsuite/g++.dg/reflect/diag2.C          |   25 +
 gcc/testsuite/g++.dg/reflect/diag3.C          |   28 +
 gcc/testsuite/g++.dg/reflect/diag4.C          |   17 +
 .../g++.dg/reflect/display_string_of1.C       |  230 +
 gcc/testsuite/g++.dg/reflect/eh1.C            |  355 +
 gcc/testsuite/g++.dg/reflect/eh2.C            |   91 +
 gcc/testsuite/g++.dg/reflect/eh3.C            |   22 +
 gcc/testsuite/g++.dg/reflect/eh4.C            |  221 +
 gcc/testsuite/g++.dg/reflect/eh5.C            |  103 +
 gcc/testsuite/g++.dg/reflect/eh6.C            |    6 +
 gcc/testsuite/g++.dg/reflect/eh7.C            |   22 +
 gcc/testsuite/g++.dg/reflect/eh8.C            |   31 +
 gcc/testsuite/g++.dg/reflect/eh9.C            |   11 +
 .../g++.dg/reflect/enumerators_of1.C          |  181 +
 gcc/testsuite/g++.dg/reflect/error1.C         |   18 +
 gcc/testsuite/g++.dg/reflect/error2.C         |   19 +
 gcc/testsuite/g++.dg/reflect/error3.C         |    5 +
 gcc/testsuite/g++.dg/reflect/error4.C         |   11 +
 gcc/testsuite/g++.dg/reflect/error5.C         |   19 +
 gcc/testsuite/g++.dg/reflect/error6.C         |   24 +
 gcc/testsuite/g++.dg/reflect/error8.C         |   37 +
 gcc/testsuite/g++.dg/reflect/error9.C         |    6 +
 gcc/testsuite/g++.dg/reflect/expr1.C          |   68 +
 gcc/testsuite/g++.dg/reflect/expr10.C         |   39 +
 gcc/testsuite/g++.dg/reflect/expr11.C         |   32 +
 gcc/testsuite/g++.dg/reflect/expr12.C         |   30 +
 gcc/testsuite/g++.dg/reflect/expr13.C         |   20 +
 gcc/testsuite/g++.dg/reflect/expr2.C          |   60 +
 gcc/testsuite/g++.dg/reflect/expr3.C          |   47 +
 gcc/testsuite/g++.dg/reflect/expr4.C          |   61 +
 gcc/testsuite/g++.dg/reflect/expr5.C          |   22 +
 gcc/testsuite/g++.dg/reflect/expr6.C          |   49 +
 gcc/testsuite/g++.dg/reflect/expr7.C          |   11 +
 gcc/testsuite/g++.dg/reflect/expr8.C          |   30 +
 gcc/testsuite/g++.dg/reflect/expr9.C          |   73 +
 gcc/testsuite/g++.dg/reflect/extract1.C       |  164 +
 gcc/testsuite/g++.dg/reflect/extract2.C       |  140 +
 gcc/testsuite/g++.dg/reflect/extract3.C       |   78 +
 gcc/testsuite/g++.dg/reflect/extract4.C       |   30 +
 gcc/testsuite/g++.dg/reflect/extract5.C       |   31 +
 gcc/testsuite/g++.dg/reflect/extract6.C       |   20 +
 gcc/testsuite/g++.dg/reflect/extract7.C       |   27 +
 gcc/testsuite/g++.dg/reflect/extract8.C       |   18 +
 gcc/testsuite/g++.dg/reflect/extract9.C       |   25 +
 gcc/testsuite/g++.dg/reflect/feat1.C          |   17 +
 gcc/testsuite/g++.dg/reflect/feat2.C          |   11 +
 .../g++.dg/reflect/has_c_language_linkage1.C  |  156 +
 .../g++.dg/reflect/has_default_argument1.C    |  132 +
 .../g++.dg/reflect/has_default_argument2.C    |   24 +
 .../reflect/has_default_member_initializer1.C |  132 +
 .../g++.dg/reflect/has_ellipsis_parameter1.C  |  148 +
 .../g++.dg/reflect/has_external_linkage1.C    |  149 +
 .../g++.dg/reflect/has_external_linkage2.C    |   13 +
 .../g++.dg/reflect/has_identifier1.C          |  231 +
 .../g++.dg/reflect/has_internal_linkage1.C    |  149 +
 .../g++.dg/reflect/has_internal_linkage2.C    |   13 +
 gcc/testsuite/g++.dg/reflect/has_linkage1.C   |  149 +
 .../g++.dg/reflect/has_module_linkage1.C      |  149 +
 .../g++.dg/reflect/has_module_linkage2.C      |   13 +
 gcc/testsuite/g++.dg/reflect/has_parent1.C    |  138 +
 .../g++.dg/reflect/has_template_arguments1.C  |  111 +
 .../g++.dg/reflect/has_template_arguments2.C  |   75 +
 .../g++.dg/reflect/has_template_arguments3.C  |   48 +
 .../g++.dg/reflect/has_template_arguments4.C  |   23 +
 gcc/testsuite/g++.dg/reflect/identifier_of1.C |  165 +
 gcc/testsuite/g++.dg/reflect/identifier_of2.C |    6 +
 gcc/testsuite/g++.dg/reflect/init1.C          |   59 +
 gcc/testsuite/g++.dg/reflect/init10.C         |   24 +
 gcc/testsuite/g++.dg/reflect/init11.C         |   25 +
 gcc/testsuite/g++.dg/reflect/init12.C         |   29 +
 gcc/testsuite/g++.dg/reflect/init13.C         |   55 +
 gcc/testsuite/g++.dg/reflect/init14.C         |   16 +
 gcc/testsuite/g++.dg/reflect/init15.C         |   29 +
 gcc/testsuite/g++.dg/reflect/init16.C         |   47 +
 gcc/testsuite/g++.dg/reflect/init17.C         |   30 +
 gcc/testsuite/g++.dg/reflect/init2.C          |   18 +
 gcc/testsuite/g++.dg/reflect/init3.C          |    8 +
 gcc/testsuite/g++.dg/reflect/init4.C          |   63 +
 gcc/testsuite/g++.dg/reflect/init5.C          |   21 +
 gcc/testsuite/g++.dg/reflect/init6.C          |   37 +
 gcc/testsuite/g++.dg/reflect/init7.C          |   41 +
 gcc/testsuite/g++.dg/reflect/init8.C          |   16 +
 gcc/testsuite/g++.dg/reflect/init9.C          |   53 +
 gcc/testsuite/g++.dg/reflect/is_accessible1.C |  131 +
 gcc/testsuite/g++.dg/reflect/is_accessible2.C |  470 +
 .../g++.dg/reflect/is_alias_template1.C       |  105 +
 gcc/testsuite/g++.dg/reflect/is_assignment1.C |   44 +
 gcc/testsuite/g++.dg/reflect/is_bit_field1.C  |  144 +
 .../g++.dg/reflect/is_class_member1.C         |  128 +
 .../g++.dg/reflect/is_class_template1.C       |  105 +
 .../g++.dg/reflect/is_complete_type1.C        |  109 +
 gcc/testsuite/g++.dg/reflect/is_concept1.C    |  105 +
 gcc/testsuite/g++.dg/reflect/is_const1.C      |  116 +
 .../g++.dg/reflect/is_consteval_only1.C       |   83 +
 .../g++.dg/reflect/is_constructible_type1.C   |  674 ++
 .../g++.dg/reflect/is_constructible_type2.C   |  137 +
 .../g++.dg/reflect/is_constructor_template1.C |   56 +
 gcc/testsuite/g++.dg/reflect/is_constuctor1.C |  101 +
 .../g++.dg/reflect/is_conversion_function1.C  |   56 +
 .../is_conversion_function_template1.C        |   54 +
 .../g++.dg/reflect/is_copy_assignment1.C      |  101 +
 .../g++.dg/reflect/is_copy_constructor1.C     |  101 +
 .../g++.dg/reflect/is_data_member_spec1.C     |  105 +
 .../g++.dg/reflect/is_default_constructor1.C  |  101 +
 gcc/testsuite/g++.dg/reflect/is_defaulted1.C  |  169 +
 gcc/testsuite/g++.dg/reflect/is_deleted1.C    |  154 +
 gcc/testsuite/g++.dg/reflect/is_destructor1.C |  124 +
 .../g++.dg/reflect/is_enumerable_type1.C      |  106 +
 gcc/testsuite/g++.dg/reflect/is_enumerator1.C |  107 +
 gcc/testsuite/g++.dg/reflect/is_explicit1.C   |   72 +
 .../reflect/is_explicit_object_parameter1.C   |  165 +
 gcc/testsuite/g++.dg/reflect/is_final1.C      |   56 +
 gcc/testsuite/g++.dg/reflect/is_function1.C   |  105 +
 gcc/testsuite/g++.dg/reflect/is_function2.C   |   44 +
 gcc/testsuite/g++.dg/reflect/is_function3.C   |   15 +
 .../g++.dg/reflect/is_function_parameter1.C   |  105 +
 .../g++.dg/reflect/is_function_parameter2.C   |   13 +
 .../g++.dg/reflect/is_function_template1.C    |  105 +
 .../g++.dg/reflect/is_function_template2.C    |   44 +
 .../g++.dg/reflect/is_function_type1.C        |   26 +
 .../g++.dg/reflect/is_literal_operator1.C     |   56 +
 .../reflect/is_literal_operator_template1.C   |   56 +
 .../reflect/is_lrvalue_reference_qualified1.C |   93 +
 .../g++.dg/reflect/is_move_assignment1.C      |  101 +
 .../g++.dg/reflect/is_move_constructor1.C     |  101 +
 .../g++.dg/reflect/is_mutable_member1.C       |  133 +
 gcc/testsuite/g++.dg/reflect/is_namespace1.C  |  105 +
 .../g++.dg/reflect/is_namespace_alias1.C      |  105 +
 .../g++.dg/reflect/is_namespace_member1.C     |  147 +
 gcc/testsuite/g++.dg/reflect/is_noexcept1.C   |  177 +
 gcc/testsuite/g++.dg/reflect/is_noexcept2.C   |   65 +
 gcc/testsuite/g++.dg/reflect/is_noexcept3.C   |  175 +
 .../reflect/is_nonstatic_data_member1.C       |  127 +
 gcc/testsuite/g++.dg/reflect/is_object1.C     |  105 +
 gcc/testsuite/g++.dg/reflect/is_object2.C     |   15 +
 .../g++.dg/reflect/is_operator_function1.C    |   56 +
 .../reflect/is_operator_function_template1.C  |   57 +
 gcc/testsuite/g++.dg/reflect/is_override1.C   |  154 +
 .../g++.dg/reflect/is_pure_virtual1.C         |   48 +
 .../reflect/is_special_member_function1.C     |  101 +
 .../g++.dg/reflect/is_static_member1.C        |  127 +
 .../g++.dg/reflect/is_string_literal1.C       |   40 +
 .../g++.dg/reflect/is_structured_binding1.C   |   99 +
 .../g++.dg/reflect/is_structured_binding2.C   |   35 +
 gcc/testsuite/g++.dg/reflect/is_template1.C   |  105 +
 gcc/testsuite/g++.dg/reflect/is_template2.C   |    9 +
 gcc/testsuite/g++.dg/reflect/is_type1.C       |  105 +
 gcc/testsuite/g++.dg/reflect/is_type_alias1.C |  105 +
 gcc/testsuite/g++.dg/reflect/is_type_alias2.C |   29 +
 gcc/testsuite/g++.dg/reflect/is_type_alias3.C |   77 +
 .../g++.dg/reflect/is_user_declared1.C        |  210 +
 .../g++.dg/reflect/is_user_provided1.C        |  210 +
 gcc/testsuite/g++.dg/reflect/is_variable1.C   |  104 +
 .../g++.dg/reflect/is_variable_template1.C    |  105 +
 gcc/testsuite/g++.dg/reflect/is_virtual1.C    |   60 +
 gcc/testsuite/g++.dg/reflect/is_volatile1.C   |  116 +
 gcc/testsuite/g++.dg/reflect/lex1.C           |   13 +
 gcc/testsuite/g++.dg/reflect/lex2.C           |   21 +
 gcc/testsuite/g++.dg/reflect/mangle1.C        |  252 +
 .../g++.dg/reflect/member-visibility1.C       |  412 +
 .../g++.dg/reflect/member-visibility2.C       |   62 +
 gcc/testsuite/g++.dg/reflect/member1.C        |   98 +
 gcc/testsuite/g++.dg/reflect/member10.C       |   42 +
 gcc/testsuite/g++.dg/reflect/member11.C       |   19 +
 gcc/testsuite/g++.dg/reflect/member12.C       |   37 +
 gcc/testsuite/g++.dg/reflect/member13.C       |   46 +
 gcc/testsuite/g++.dg/reflect/member14.C       |   27 +
 gcc/testsuite/g++.dg/reflect/member15.C       |   28 +
 gcc/testsuite/g++.dg/reflect/member16.C       |   86 +
 gcc/testsuite/g++.dg/reflect/member2.C        |   14 +
 gcc/testsuite/g++.dg/reflect/member3.C        |   35 +
 gcc/testsuite/g++.dg/reflect/member4.C        |   14 +
 gcc/testsuite/g++.dg/reflect/member5.C        |   19 +
 gcc/testsuite/g++.dg/reflect/member6.C        |   13 +
 gcc/testsuite/g++.dg/reflect/member7.C        |   78 +
 gcc/testsuite/g++.dg/reflect/member8.C        |   15 +
 gcc/testsuite/g++.dg/reflect/member9.C        |   18 +
 gcc/testsuite/g++.dg/reflect/members_of1.C    |  524 +
 gcc/testsuite/g++.dg/reflect/members_of2.C    |   58 +
 gcc/testsuite/g++.dg/reflect/members_of3.C    |   49 +
 gcc/testsuite/g++.dg/reflect/metafn-ptr1.C    |   19 +
 gcc/testsuite/g++.dg/reflect/ns1.C            |   37 +
 gcc/testsuite/g++.dg/reflect/ns2.C            |   21 +
 gcc/testsuite/g++.dg/reflect/ns3.C            |   15 +
 gcc/testsuite/g++.dg/reflect/ns4.C            |   94 +
 gcc/testsuite/g++.dg/reflect/ns5.C            |   45 +
 gcc/testsuite/g++.dg/reflect/ns6.C            |   17 +
 gcc/testsuite/g++.dg/reflect/null1.C          |   30 +
 gcc/testsuite/g++.dg/reflect/null2.C          |    7 +
 gcc/testsuite/g++.dg/reflect/null3.C          |    9 +
 gcc/testsuite/g++.dg/reflect/null4.C          |   18 +
 gcc/testsuite/g++.dg/reflect/null5.C          |   26 +
 gcc/testsuite/g++.dg/reflect/object_of1.C     |   85 +
 gcc/testsuite/g++.dg/reflect/object_of2.C     |   26 +
 gcc/testsuite/g++.dg/reflect/odr1.C           |   29 +
 gcc/testsuite/g++.dg/reflect/offset_of1.C     |  132 +
 gcc/testsuite/g++.dg/reflect/operator_of1.C   |  219 +
 gcc/testsuite/g++.dg/reflect/override1.C      |   39 +
 gcc/testsuite/g++.dg/reflect/p2996-1.C        |   20 +
 gcc/testsuite/g++.dg/reflect/p2996-10.C       |   15 +
 gcc/testsuite/g++.dg/reflect/p2996-11.C       |   17 +
 gcc/testsuite/g++.dg/reflect/p2996-12.C       |   24 +
 gcc/testsuite/g++.dg/reflect/p2996-13.C       |   19 +
 gcc/testsuite/g++.dg/reflect/p2996-14.C       |   17 +
 gcc/testsuite/g++.dg/reflect/p2996-15.C       |   16 +
 gcc/testsuite/g++.dg/reflect/p2996-16.C       |   18 +
 gcc/testsuite/g++.dg/reflect/p2996-17.C       |   32 +
 gcc/testsuite/g++.dg/reflect/p2996-18.C       |   46 +
 gcc/testsuite/g++.dg/reflect/p2996-19.C       |   22 +
 gcc/testsuite/g++.dg/reflect/p2996-2.C        |   27 +
 gcc/testsuite/g++.dg/reflect/p2996-20.C       |   61 +
 gcc/testsuite/g++.dg/reflect/p2996-21.C       |   68 +
 gcc/testsuite/g++.dg/reflect/p2996-3.C        |   24 +
 gcc/testsuite/g++.dg/reflect/p2996-4.C        |   27 +
 gcc/testsuite/g++.dg/reflect/p2996-5.C        |   50 +
 gcc/testsuite/g++.dg/reflect/p2996-6.C        |   18 +
 gcc/testsuite/g++.dg/reflect/p2996-7.C        |   16 +
 gcc/testsuite/g++.dg/reflect/p2996-8.C        |   14 +
 gcc/testsuite/g++.dg/reflect/p2996-9.C        |   24 +
 gcc/testsuite/g++.dg/reflect/p3394-1.C        |  185 +
 gcc/testsuite/g++.dg/reflect/p3491-1.C        |   25 +
 gcc/testsuite/g++.dg/reflect/p3491-2.C        |   50 +
 gcc/testsuite/g++.dg/reflect/p3491-3.C        |   45 +
 gcc/testsuite/g++.dg/reflect/pack-index1.C    |   28 +
 gcc/testsuite/g++.dg/reflect/parameters_of1.C |   35 +
 gcc/testsuite/g++.dg/reflect/parameters_of2.C |   41 +
 gcc/testsuite/g++.dg/reflect/parameters_of3.C |   41 +
 gcc/testsuite/g++.dg/reflect/parameters_of4.C |   12 +
 gcc/testsuite/g++.dg/reflect/parameters_of5.C |   43 +
 gcc/testsuite/g++.dg/reflect/parameters_of6.C |    8 +
 gcc/testsuite/g++.dg/reflect/parent_of1.C     |  238 +
 gcc/testsuite/g++.dg/reflect/parm1.C          |   56 +
 gcc/testsuite/g++.dg/reflect/parm2.C          |   16 +
 gcc/testsuite/g++.dg/reflect/parm3.C          |   33 +
 gcc/testsuite/g++.dg/reflect/parm4.C          |   32 +
 gcc/testsuite/g++.dg/reflect/pr122634-1.C     |   65 +
 gcc/testsuite/g++.dg/reflect/pr122634-2.C     |   10 +
 gcc/testsuite/g++.dg/reflect/qrn1.C           |  273 +
 gcc/testsuite/g++.dg/reflect/qrn2.C           |   43 +
 .../g++.dg/reflect/reflect_constant1.C        |   25 +
 .../g++.dg/reflect/reflect_constant2.C        |   31 +
 .../g++.dg/reflect/reflect_constant3.C        |   67 +
 .../g++.dg/reflect/reflect_constant4.C        |   15 +
 .../g++.dg/reflect/reflect_constant5.C        |   30 +
 .../g++.dg/reflect/reflect_constant6.C        |   30 +
 .../g++.dg/reflect/reflect_constant7.C        |   18 +
 .../g++.dg/reflect/reflect_constant8.C        |   33 +
 .../g++.dg/reflect/reflect_constant_array1.C  |  110 +
 .../g++.dg/reflect/reflect_constant_array2.C  |   17 +
 .../g++.dg/reflect/reflect_constant_string1.C |  133 +
 .../g++.dg/reflect/reflect_constant_string2.C |   14 +
 .../g++.dg/reflect/reflect_function1.C        |   17 +
 .../g++.dg/reflect/reflect_function2.C        |   62 +
 .../g++.dg/reflect/reflect_object1.C          |   86 +
 .../g++.dg/reflect/reflect_object2.C          |  115 +
 .../g++.dg/reflect/reflect_object3.C          |   49 +
 .../g++.dg/reflect/reflect_object4.C          |   10 +
 .../g++.dg/reflect/return_type_of1.C          |   99 +
 gcc/testsuite/g++.dg/reflect/serialize1.C     |  151 +
 gcc/testsuite/g++.dg/reflect/serialize2.C     |   67 +
 gcc/testsuite/g++.dg/reflect/size_of1.C       |  122 +
 .../g++.dg/reflect/source_location_of1.C      |  113 +
 gcc/testsuite/g++.dg/reflect/splice1.C        |   28 +
 gcc/testsuite/g++.dg/reflect/splicing-base1.C |   24 +
 gcc/testsuite/g++.dg/reflect/splicing-base2.C |   30 +
 gcc/testsuite/g++.dg/reflect/splicing-base3.C |  112 +
 gcc/testsuite/g++.dg/reflect/splicing-base4.C |   28 +
 .../g++.dg/reflect/storage_duration1.C        |  141 +
 .../g++.dg/reflect/storage_duration2.C        |  218 +
 .../g++.dg/reflect/storage_duration3.C        |   19 +
 gcc/testsuite/g++.dg/reflect/subobjects_of1.C |  214 +
 gcc/testsuite/g++.dg/reflect/substitute1.C    |  238 +
 gcc/testsuite/g++.dg/reflect/substitute2.C    |   30 +
 gcc/testsuite/g++.dg/reflect/symbol_of1.C     |   61 +
 gcc/testsuite/g++.dg/reflect/symbol_of2.C     |    6 +
 .../g++.dg/reflect/template_arguments_of1.C   |   34 +
 .../g++.dg/reflect/template_arguments_of2.C   |  105 +
 .../g++.dg/reflect/template_arguments_of3.C   |   18 +
 gcc/testsuite/g++.dg/reflect/template_of1.C   |  119 +
 gcc/testsuite/g++.dg/reflect/template_of2.C   |   32 +
 gcc/testsuite/g++.dg/reflect/template_of3.C   |   22 +
 gcc/testsuite/g++.dg/reflect/tuple1.C         |   86 +
 gcc/testsuite/g++.dg/reflect/tuple2.C         |   21 +
 gcc/testsuite/g++.dg/reflect/type1.C          |  190 +
 gcc/testsuite/g++.dg/reflect/type10.C         |   31 +
 gcc/testsuite/g++.dg/reflect/type2.C          |   58 +
 gcc/testsuite/g++.dg/reflect/type3.C          |   37 +
 gcc/testsuite/g++.dg/reflect/type4.C          |  136 +
 gcc/testsuite/g++.dg/reflect/type5.C          |   10 +
 gcc/testsuite/g++.dg/reflect/type6.C          |   25 +
 gcc/testsuite/g++.dg/reflect/type7.C          |   15 +
 gcc/testsuite/g++.dg/reflect/type8.C          |   76 +
 gcc/testsuite/g++.dg/reflect/type9.C          |   49 +
 gcc/testsuite/g++.dg/reflect/type_of1.C       |  190 +
 gcc/testsuite/g++.dg/reflect/type_of2.C       |   31 +
 gcc/testsuite/g++.dg/reflect/type_rels1.C     |  141 +
 gcc/testsuite/g++.dg/reflect/type_trait1.C    |  654 ++
 gcc/testsuite/g++.dg/reflect/type_trait10.C   |  116 +
 gcc/testsuite/g++.dg/reflect/type_trait11.C   |  447 +
 gcc/testsuite/g++.dg/reflect/type_trait12.C   |  137 +
 gcc/testsuite/g++.dg/reflect/type_trait13.C   |  425 +
 gcc/testsuite/g++.dg/reflect/type_trait2.C    |   92 +
 gcc/testsuite/g++.dg/reflect/type_trait3.C    |  218 +
 gcc/testsuite/g++.dg/reflect/type_trait4.C    |   12 +
 gcc/testsuite/g++.dg/reflect/type_trait5.C    |  453 +
 gcc/testsuite/g++.dg/reflect/type_trait6.C    | 1381 +++
 gcc/testsuite/g++.dg/reflect/type_trait8.C    |  129 +
 gcc/testsuite/g++.dg/reflect/type_trait9.C    |   67 +
 .../g++.dg/reflect/u8display_string_of1.C     |  230 +
 .../g++.dg/reflect/u8identifier_of1.C         |  168 +
 gcc/testsuite/g++.dg/reflect/u8symbol_of1.C   |   61 +
 .../g++.dg/reflect/underlying_type1.C         |   13 +
 .../g++.dg/reflect/value_or_object1.C         |   50 +
 gcc/testsuite/g++.dg/reflect/variable_of1.C   |  133 +
 gcc/testsuite/g++.dg/reflect/variable_of2.C   |   21 +
 gcc/testsuite/g++.dg/reflect/variant1.C       |   37 +
 gcc/testsuite/g++.dg/reflect/variant2.C       |   19 +
 gcc/testsuite/g++.dg/reflect/vector1.C        |   28 +
 gcc/testsuite/g++.dg/reflect/visibility1.C    |  121 +
 gcc/toplev.cc                                 |    4 +
 gcc/tree-core.h                               |    3 +-
 gcc/tree.h                                    |    4 +
 gcc/varpool.cc                                |    5 +
 libcc1/libcp1plugin.cc                        |    3 +-
 libcpp/charset.cc                             |  108 +
 libcpp/include/cpplib.h                       |    6 +
 libcpp/internal.h                             |    8 +
 libcpp/lex.cc                                 |   33 +-
 libstdc++-v3/include/Makefile.am              |    1 +
 libstdc++-v3/include/Makefile.in              |    1 +
 libstdc++-v3/include/bits/iterator_concepts.h |    2 +-
 libstdc++-v3/include/bits/version.def         |    9 +
 libstdc++-v3/include/bits/version.h           |   10 +
 libstdc++-v3/include/precompiled/stdc++.h     |    1 +
 libstdc++-v3/include/std/meta                 |  651 ++
 libstdc++-v3/include/std/type_traits          |   55 +
 libstdc++-v3/src/c++23/std.cc.in              |  255 +
 .../requirements/explicit_instantiation.cc    |   29 +
 .../requirements/typedefs.cc                  |   34 +
 .../20_util/is_consteval_only/value.cc        |   47 +
 .../requirements/explicit_instantiation.cc    |   29 +
 .../is_reflection/requirements/typedefs.cc    |   34 +
 .../testsuite/20_util/is_reflection/value.cc  |   37 +
 .../20_util/variable_templates_for_traits.cc  |    7 +
 474 files changed, 46121 insertions(+), 270 deletions(-)
 create mode 100644 gcc/cp/metafns.gperf
 create mode 100644 gcc/cp/metafns.h
 create mode 100644 gcc/cp/reflect.cc
 create mode 100644 gcc/testsuite/g++.dg/reflect/access_context1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/access_context2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/adl1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/alignment_of1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/alignment_of2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/annotations1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/annotations2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/annotations3.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/annotations4.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/annotations5.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/anon1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/anon2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/anon3.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/bases_of1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/bases_of2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/bases_of3.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/bit_size_of1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/bitfield1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/can_substitute1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/class1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/class2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/common_reference1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/common_type1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/compare1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/compare2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/compare3.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/compare4.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/compare5.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/compare6.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/compare7.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/compare8.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/compare9.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/compat1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/complete1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/constant_of1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/constant_of2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/constant_of3.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/constant_of4.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/constant_of5.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/constant_of6.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/constant_of7.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/constant_of8.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/constant_of9.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/crash1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/crash10.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/crash11.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/crash12.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/crash13.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/crash14.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/crash15.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/crash16.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/crash17.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/crash18.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/crash2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/crash3.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/crash4.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/crash5.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/crash6.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/crash7.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/crash8.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/crash9.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/data_member_spec1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/data_member_spec2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/data_member_spec3.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/data_member_spec4.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/dealias1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/dealias2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/define_aggregate1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/define_aggregate2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/define_aggregate3.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/define_aggregate4.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/define_aggregate5.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/define_static_array1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/define_static_array2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/define_static_object1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/define_static_string1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/dep1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/dep10.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/dep11.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/dep2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/dep3.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/dep4.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/dep5.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/dep6.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/dep7.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/dep8.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/dep9.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/diag1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/diag2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/diag3.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/diag4.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/display_string_of1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/eh1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/eh2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/eh3.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/eh4.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/eh5.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/eh6.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/eh7.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/eh8.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/eh9.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/enumerators_of1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/error1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/error2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/error3.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/error4.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/error5.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/error6.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/error8.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/error9.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/expr1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/expr10.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/expr11.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/expr12.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/expr13.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/expr2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/expr3.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/expr4.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/expr5.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/expr6.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/expr7.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/expr8.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/expr9.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/extract1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/extract2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/extract3.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/extract4.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/extract5.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/extract6.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/extract7.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/extract8.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/extract9.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/feat1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/feat2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/has_c_language_linkage1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/has_default_argument1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/has_default_argument2.C
 create mode 100644 
gcc/testsuite/g++.dg/reflect/has_default_member_initializer1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/has_ellipsis_parameter1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/has_external_linkage1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/has_external_linkage2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/has_identifier1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/has_internal_linkage1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/has_internal_linkage2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/has_linkage1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/has_module_linkage1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/has_module_linkage2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/has_parent1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/has_template_arguments1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/has_template_arguments2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/has_template_arguments3.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/has_template_arguments4.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/identifier_of1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/identifier_of2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/init1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/init10.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/init11.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/init12.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/init13.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/init14.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/init15.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/init16.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/init17.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/init2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/init3.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/init4.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/init5.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/init6.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/init7.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/init8.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/init9.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_accessible1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_accessible2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_alias_template1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_assignment1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_bit_field1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_class_member1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_class_template1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_complete_type1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_concept1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_const1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_consteval_only1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_constructible_type1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_constructible_type2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_constructor_template1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_constuctor1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_conversion_function1.C
 create mode 100644 
gcc/testsuite/g++.dg/reflect/is_conversion_function_template1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_copy_assignment1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_copy_constructor1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_data_member_spec1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_default_constructor1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_defaulted1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_deleted1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_destructor1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_enumerable_type1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_enumerator1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_explicit1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_explicit_object_parameter1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_final1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_function1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_function2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_function3.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_function_parameter1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_function_parameter2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_function_template1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_function_template2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_function_type1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_literal_operator1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_literal_operator_template1.C
 create mode 100644 
gcc/testsuite/g++.dg/reflect/is_lrvalue_reference_qualified1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_move_assignment1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_move_constructor1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_mutable_member1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_namespace1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_namespace_alias1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_namespace_member1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_noexcept1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_noexcept2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_noexcept3.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_nonstatic_data_member1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_object1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_object2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_operator_function1.C
 create mode 100644 
gcc/testsuite/g++.dg/reflect/is_operator_function_template1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_override1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_pure_virtual1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_special_member_function1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_static_member1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_string_literal1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_structured_binding1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_structured_binding2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_template1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_template2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_type1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_type_alias1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_type_alias2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_type_alias3.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_user_declared1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_user_provided1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_variable1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_variable_template1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_virtual1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/is_volatile1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/lex1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/lex2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/mangle1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/member-visibility1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/member-visibility2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/member1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/member10.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/member11.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/member12.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/member13.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/member14.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/member15.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/member16.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/member2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/member3.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/member4.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/member5.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/member6.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/member7.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/member8.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/member9.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/members_of1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/members_of2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/members_of3.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/metafn-ptr1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/ns1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/ns2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/ns3.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/ns4.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/ns5.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/ns6.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/null1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/null2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/null3.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/null4.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/null5.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/object_of1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/object_of2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/odr1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/offset_of1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/operator_of1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/override1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/p2996-1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/p2996-10.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/p2996-11.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/p2996-12.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/p2996-13.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/p2996-14.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/p2996-15.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/p2996-16.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/p2996-17.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/p2996-18.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/p2996-19.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/p2996-2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/p2996-20.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/p2996-21.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/p2996-3.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/p2996-4.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/p2996-5.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/p2996-6.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/p2996-7.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/p2996-8.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/p2996-9.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/p3394-1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/p3491-1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/p3491-2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/p3491-3.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/pack-index1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/parameters_of1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/parameters_of2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/parameters_of3.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/parameters_of4.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/parameters_of5.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/parameters_of6.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/parent_of1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/parm1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/parm2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/parm3.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/parm4.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/pr122634-1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/pr122634-2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/qrn1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/qrn2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/reflect_constant1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/reflect_constant2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/reflect_constant3.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/reflect_constant4.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/reflect_constant5.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/reflect_constant6.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/reflect_constant7.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/reflect_constant8.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/reflect_constant_array1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/reflect_constant_array2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/reflect_constant_string1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/reflect_constant_string2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/reflect_function1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/reflect_function2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/reflect_object1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/reflect_object2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/reflect_object3.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/reflect_object4.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/return_type_of1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/serialize1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/serialize2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/size_of1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/source_location_of1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/splice1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/splicing-base1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/splicing-base2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/splicing-base3.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/splicing-base4.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/storage_duration1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/storage_duration2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/storage_duration3.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/subobjects_of1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/substitute1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/substitute2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/symbol_of1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/symbol_of2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/template_arguments_of1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/template_arguments_of2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/template_arguments_of3.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/template_of1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/template_of2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/template_of3.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/tuple1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/tuple2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/type1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/type10.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/type2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/type3.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/type4.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/type5.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/type6.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/type7.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/type8.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/type9.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/type_of1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/type_of2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/type_rels1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/type_trait1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/type_trait10.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/type_trait11.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/type_trait12.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/type_trait13.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/type_trait2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/type_trait3.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/type_trait4.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/type_trait5.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/type_trait6.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/type_trait8.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/type_trait9.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/u8display_string_of1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/u8identifier_of1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/u8symbol_of1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/underlying_type1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/value_or_object1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/variable_of1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/variable_of2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/variant1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/variant2.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/vector1.C
 create mode 100644 gcc/testsuite/g++.dg/reflect/visibility1.C
 create mode 100644 libstdc++-v3/include/std/meta
 create mode 100644 
libstdc++-v3/testsuite/20_util/is_consteval_only/requirements/explicit_instantiation.cc
 create mode 100644 
libstdc++-v3/testsuite/20_util/is_consteval_only/requirements/typedefs.cc
 create mode 100644 libstdc++-v3/testsuite/20_util/is_consteval_only/value.cc
 create mode 100644 
libstdc++-v3/testsuite/20_util/is_reflection/requirements/explicit_instantiation.cc
 create mode 100644 
libstdc++-v3/testsuite/20_util/is_reflection/requirements/typedefs.cc
 create mode 100644 libstdc++-v3/testsuite/20_util/is_reflection/value.cc

Marek

Reply via email to