Cover Letter Detail
Show a cover letter.
GET /api/1.0/covers/2175256/?format=api
{ "id": 2175256, "url": "http://patchwork.ozlabs.org/api/1.0/covers/2175256/?format=api", "project": { "id": 17, "url": "http://patchwork.ozlabs.org/api/1.0/projects/17/?format=api", "name": "GNU Compiler Collection", "link_name": "gcc", "list_id": "gcc-patches.gcc.gnu.org", "list_email": "gcc-patches@gcc.gnu.org", "web_url": null, "scm_url": null, "webscm_url": null }, "msgid": "<aULdgYtbcyGQIxK1@redhat.com>", "date": "2025-12-17T16:42:41", "name": "[0/9,v2] c++: C++26 Reflection [PR120775]", "submitter": { "id": 14370, "url": "http://patchwork.ozlabs.org/api/1.0/people/14370/?format=api", "name": "Marek Polacek", "email": "polacek@redhat.com" }, "series": [ { "id": 485726, "url": "http://patchwork.ozlabs.org/api/1.0/series/485726/?format=api", "date": "2025-12-17T16:42:41", "name": "c++: C++26 Reflection [PR120775]", "version": 2, "mbox": "http://patchwork.ozlabs.org/series/485726/mbox/" } ], "headers": { "Return-Path": "<gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org>", "X-Original-To": [ "incoming@patchwork.ozlabs.org", "gcc-patches@gcc.gnu.org" ], "Delivered-To": [ "patchwork-incoming@legolas.ozlabs.org", "gcc-patches@gcc.gnu.org" ], "Authentication-Results": [ "legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=Ni5LkFiP;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=38.145.34.32; helo=vm01.sourceware.org;\n envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)", "sourceware.org;\n\tdkim=pass (1024-bit key,\n unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256\n header.s=mimecast20190719 header.b=Ni5LkFiP", "sourceware.org; dmarc=pass (p=quarantine dis=none)\n header.from=redhat.com", "sourceware.org; spf=pass smtp.mailfrom=redhat.com", "server2.sourceware.org;\n arc=none smtp.remote-ip=170.10.129.124" ], "Received": [ "from vm01.sourceware.org (vm01.sourceware.org [38.145.34.32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4dWfkc50zLz1y3Z\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 18 Dec 2025 03:43:36 +1100 (AEDT)", "from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id A8F3E4BA2E3C\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 17 Dec 2025 16:43:34 +0000 (GMT)", "from us-smtp-delivery-124.mimecast.com\n (us-smtp-delivery-124.mimecast.com [170.10.129.124])\n by sourceware.org (Postfix) with ESMTP id 6A79A4BA2E05\n for <gcc-patches@gcc.gnu.org>; Wed, 17 Dec 2025 16:42:52 +0000 (GMT)", "from mail-qk1-f200.google.com (mail-qk1-f200.google.com\n [209.85.222.200]) by relay.mimecast.com with ESMTP with STARTTLS\n (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id\n us-mta-631-OQPtbQYgO5iAsTZnQjw4cQ-1; Wed, 17 Dec 2025 11:42:50 -0500", "by mail-qk1-f200.google.com with SMTP id\n af79cd13be357-8b245c49d0cso1336756085a.3\n for <gcc-patches@gcc.gnu.org>; Wed, 17 Dec 2025 08:42:50 -0800 (PST)", "from redhat.com ([2603:7000:9500:10::1db4])\n by smtp.gmail.com with ESMTPSA id\n af79cd13be357-8be31b53dbasm441178485a.34.2025.12.17.08.42.43\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Wed, 17 Dec 2025 08:42:43 -0800 (PST)" ], "DKIM-Filter": [ "OpenDKIM Filter v2.11.0 sourceware.org A8F3E4BA2E3C", "OpenDKIM Filter v2.11.0 sourceware.org 6A79A4BA2E05" ], "DMARC-Filter": "OpenDMARC Filter v1.4.2 sourceware.org 6A79A4BA2E05", "ARC-Filter": "OpenARC Filter v1.0.0 sourceware.org 6A79A4BA2E05", "ARC-Seal": "i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1765989772; cv=none;\n b=vzNjd2HyaRLSvIZkZTW0Ppw5w3+6qJwR750kZzIBidBW9+rbIoC+V5KUevnOHrooHMZnKJ4w2jOaVBG8ud82TWrtU+DOsZm8JcSmfyxPnDJduQljFSRhB4zOAcbpIsfxoiVEWxMw+n/KcFFa1XqzPc0fFckPM2rruXhOVv2cXYQ=", "ARC-Message-Signature": "i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1765989772; c=relaxed/simple;\n bh=lso7nMFd92Oj4cIBjp48W6p1o/O4BvaghOFggUNS2Ww=;\n h=DKIM-Signature:Date:From:To:Subject:Message-ID:MIME-Version;\n b=K7ASb23czmJJQJ9NxOEiuEUEgy9ORfvz5arnwpY6n6kJz0u05PFVMHNEF4nYf4xBWQIOY4plq03Ud5cOHSzx/IlTBulMVrC9kfuk2NAr6ONSW+Trb6OrcvqXhX6xepvst5qGLHPaa9zbcVcv7Wh15M7kluN2xTrwYM3h4tC8agQ=", "ARC-Authentication-Results": "i=1; server2.sourceware.org", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com;\n s=mimecast20190719; t=1765989772;\n h=from:from:reply-to:subject:subject:date:date:message-id:message-id:\n to:to:cc:mime-version:mime-version:content-type:content-type:\n content-transfer-encoding:content-transfer-encoding;\n bh=i1ndiBl4695GzlpfLXsqVvyga2c31RWdJhEhwLLAa4A=;\n b=Ni5LkFiPwWQNUbfbgc2n3BlqSV6zmqzNG6tZI9p9w8Ue3nVZHmKwyWffQt34DbFBYtKAXv\n 3leWLuslQpZmYO3XgCBQYvISGcghdiwYLSL4dj7oIPzg2kX2cbxX0faOE6fMxgcPumbEWK\n 3b/wN4pYhCdrnZwLvJOQvy2kAi3MQOE=", "X-MC-Unique": "OQPtbQYgO5iAsTZnQjw4cQ-1", "X-Mimecast-MFC-AGG-ID": "OQPtbQYgO5iAsTZnQjw4cQ_1765989769", "X-Google-DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20230601; t=1765989769; x=1766594569;\n h=user-agent:content-transfer-encoding:content-disposition\n :mime-version:message-id:subject:to:from:date:x-gm-gg\n :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;\n bh=i1ndiBl4695GzlpfLXsqVvyga2c31RWdJhEhwLLAa4A=;\n b=GyCWJMLIo6ZzpJFTgsluAc18D4rtNdGMQOTXisL8JVp4U22pdQYVZhrkW9VHYISA3S\n ziNPGpq4fBUaKix5NCX5TWuQ3sWf18QuC2kTtgNH+bgRgIGCiJLsUHLSYmbVkvnR4pE8\n bNBJdizdxRvAMNVhjuJvTTSoJANyCofLLqzaH6IdXkCefpwHiZYHTLH+d/7tGsnJwRk+\n A4ZsMF6QYejb/1kI6FL/r2JnUqNlTliedMLrEnNdBzNsoUTxd5amYhKSSQVaJZYOmxzv\n udNgX+6oeyFXu8nugv4d9CqNI/HoRTmf40+gVzl86KqjYgFUJzancg+QKg1QrL06ivCQ\n azWw==", "X-Gm-Message-State": "AOJu0YypcBoECBM95BM+SceUKX9yFrmBfO2yNyzJHKfwp8TnNVtm+GTi\n BBCqF5Zuk2iKUcBUx3Pb41M6KXl3oJnq4l6iPTFN0UxJX8ivLXdBehm4bpX3qbdBPLsBkx0W+ko\n TQPFsJW1SecURyqKYWLckfAhBB6Q+DFOyqu5wRJSQVj7S2aYgMWxX8QZeFHVH1xHD4iNXTQDqp8\n 6i2F89e60r25DjTz6pAj9BRx4EwJVzJLIrQJrNcM9E5A==", "X-Gm-Gg": "AY/fxX5J5NEK3ZTS1cFkOYUjejX+F+OcBjO7kt+7GnrqJYDBa7tVzW3uaiV3a925Wc8\n vNMambQnpSlpgnfEtMiXnjSskO9ZuApFJmLZpiqmz6SQa/A/qgt7FCBPnje6whnCMgsBIpMcdG9\n 3RYhsBN4KyDaNg6xcKhNACtFgiUg2ehLUiuaCsvm13ZLVTBWmrRKaQNkArHUI8GSy+s5Y8dPlCQ\n +kueBRejZmjolp08Ei4JgU++RSkFybW056mnFUbjNeHzKnnaJug8tFEft47QJwbqUPEEQiMXhDp\n T0LPxbO+pbI0xAKLFlausKhJMAovi5d2/ASNG2GOj4Rp+hhSycDzaJMj2uJzI9CXYA==", "X-Received": [ "by 2002:a05:620a:1a0c:b0:8b5:5a03:36b4 with SMTP id\n af79cd13be357-8bb3a389efdmr2682363285a.71.1765989767779;\n Wed, 17 Dec 2025 08:42:47 -0800 (PST)", "by 2002:a05:620a:1a0c:b0:8b5:5a03:36b4 with SMTP id\n af79cd13be357-8bb3a389efdmr2682344985a.71.1765989765229;\n Wed, 17 Dec 2025 08:42:45 -0800 (PST)" ], "X-Google-Smtp-Source": "\n AGHT+IFt9yN0flLrtFK1cmxcDf/oBd8mbkzvzFuu3dYb7YeG7k7LYhNPMfu/FUoePbpqEI3Zz55KZw==", "Date": "Wed, 17 Dec 2025 11:42:41 -0500", "From": "Marek Polacek <polacek@redhat.com>", "To": "GCC Patches <gcc-patches@gcc.gnu.org>, Jason Merrill <jason@redhat.com>,\n Jakub Jelinek <jakub@redhat.com>, Jonathan Wakely <jwakely@redhat.com>", "Subject": "[PATCH 0/9 v2] c++: C++26 Reflection [PR120775]", "Message-ID": "<aULdgYtbcyGQIxK1@redhat.com>", "MIME-Version": "1.0", "User-Agent": "Mutt/2.2.14 (2025-02-20)", "X-Mimecast-Spam-Score": "0", "X-Mimecast-MFC-PROC-ID": "YOTjJLtGwr0Bppu_Xzc4csG7sNmzQEJtjVjXpiyge3Y_1765989769", "X-Mimecast-Originator": "redhat.com", "Content-Type": "text/plain; charset=utf-8", "Content-Disposition": "inline", "Content-Transfer-Encoding": "8bit", "X-BeenThere": "gcc-patches@gcc.gnu.org", "X-Mailman-Version": "2.1.30", "Precedence": "list", "List-Id": "Gcc-patches mailing list <gcc-patches.gcc.gnu.org>", "List-Unsubscribe": "<https://gcc.gnu.org/mailman/options/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe>", "List-Archive": "<https://gcc.gnu.org/pipermail/gcc-patches/>", "List-Post": "<mailto:gcc-patches@gcc.gnu.org>", "List-Help": "<mailto:gcc-patches-request@gcc.gnu.org?subject=help>", "List-Subscribe": "<https://gcc.gnu.org/mailman/listinfo/gcc-patches>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe>", "Errors-To": "gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org" }, "content": "After a month of work, it's time to post v2 of the Reflection patch\nseries. Since v1, we checked in over 100 commits, wrote 5,000 LOC,\nadded almost 50 tests and fixed about 10 existing FIXMEs.\n\nThe whole branch can be found at\n<https://forge.sourceware.org/marek/gcc/commits/branch/reflection>\n\nI will post v1/v2 diff as well.\n\nThis patch series does not address the reflect.cc feedback. For that,\nwait for v3 in early January. We plan to merge the whole series in\nthe first half of January.\n\nBootstrapped/regtested on x86_64-pc-linux-gnu.\n\n-- >8 --\nThis patch implements C++26 Reflection as specified by P2996R13, which allows\nusers to perform magic. This patch also implements related papers:\nAnnotations for Reflection (P3394R4),\nSplicing a base class subobject (P3293R3),\ndefine_static_{string,object,array} (P3491R3),\nFunction Parameter Reflection (P3096R12).\n(I already implemented consteval blocks back in July.)\n\nWe also implemented some CWG issues that had been approved in Kona;\ne.g., CWG 3101, 3109, 3111, 3115, 3117.\n\nAll metafunctions are implemented in this patch.\n\nThe feature needs to be enabled by -std=c++26 -freflection.\n\nSome stats: the v1 patch was over 51,200 LOC which were written in ~335\ncommits. It came with over 400 tests with 11,722 static_asserts. We still\nhad about 50 TODOs and FIXMEs in the code.\nv2 consists of about 56,000 LOC which were created in 440 commits. We\nnow have 446 tests with 40 TODOs remaining.\n\nI'd like to thank:\nJakub Jelinek, whose efforts can only be described as heroic and who\nnever ceases to amaze me even after nearly 15 years of working together,\nhe implemented many difficult metafunctions, annotations, mangling,\nconverted our metafunction dispatch to using gperf, and so on and on;\nJonathan Wakely for his libstdc++ patch review and generous & impeccable\nadvice even at odd hours; Dan Katz for his work on the Reflection papers,\nwriting Reflection tests for clang++ (many of which I've stolen^Wused),\nfor his advice, bug reports, and generally cheering me on; Jason Merrill\nfor his guidance, patch review, and, in fact, encouraging me to take on\nthis project in the first place; Michael Levine, Valentyn Yukhymenko, and\nAlex Yesmanchyk for their nice contributions to Reflection; and Tomasz\nKamiński for providing test cases, finding bugs, and answering my C++\nquestions.\n\n\tPR c++/120775\n\tPR c++/123081\n\tPR c++/122634\n\ngcc/ChangeLog:\n\n\t* attribs.cc (attribute_value_equal): Return false if either attribute\n\tis ATTR_UNIQUE_VALUE_P.\n\t(merge_attributes): Handle lists with ATTR_UNIQUE_VALUE_P values.\n\t* doc/invoke.texi: Document -freflection.\n\t* dwarf2out.cc (is_base_type) <case default>: Check\n\tTREE_CODE >= LAST_AND_UNUSED_TREE_CODE instead of is_cxx_auto.\n\t(gen_type_die_with_usage): For TREE_CODE >= LAST_AND_UNUSED_TREE_CODE\n\ttrees use use DW_TAG_unspecified_type.\n\t* tree-core.h (struct tree_base): Update a comment.\n\t* tree.h (ATTR_UNIQUE_VALUE_P): Define.\n\t(BINFO_BASE_ACCESSES): Update the comment.\n\ngcc/c-family/ChangeLog:\n\n\t* c-attribs.cc (attribute_takes_identifier_p): Return false for C++\n\tannotations. Handle \"old parm name\".\n\t* c-cppbuiltin.cc (c_cpp_builtins): Define __cpp_impl_reflection.\n\t* c.opt (freflection): New.\n\ngcc/cp/ChangeLog:\n\n\t* Make-lang.in: Add cp/reflect.o. Add a rule for cp/metafns.h.\n\t* config-lang.in: Add reflect.cc.\n\t* constexpr.cc (constexpr_global_ctx): Add consteval_block and\n\tmetafns_called members. Initialize them.\n\t(cxx_constexpr_quiet_p): New.\n\t(cxx_constexpr_manifestly_const_eval): New.\n\t(cxx_constexpr_caller): New.\n\t(cxx_constexpr_consteval_block): New.\n\t(enum value_cat): Move into cp-tree.h.\n\t(cxx_eval_constant_expression): Move the declaration into cp-tree.h.\n\tNo longer static. Handle REFLECT_EXPR. Handle conversion of\n\ta reflection to the meta::info type.\n\t(cxx_eval_cxa_builtin_fn): Override current_function_decl.\n\t(cxx_eval_builtin_function_call): Handle __builtin_is_string_literal.\n\t(is_std_allocator): Also check __new_allocator.\n\t(is_std_allocator_allocate): No longer static.\n\t(cxa_allocate_and_throw_exception): New.\n\t(cxx_eval_call_expression): Handle metafunctions. Maybe set\n\tmetafns_called.\n\t(reduced_constant_expression_p): Handle REFLECT_EXPR.\n\t(cxx_eval_binary_expression): Use compare_reflections for comparing\n\treflections.\n\t(find_immediate_fndecl): Don't walk REFLECT_EXPR_P.\n\t(cxx_eval_outermost_constant_expr): Set global_ctx.consteval_block.\n\tDetect consteval-only smuggling.\n\t(potential_constant_expression_1): Return true for REFLECT_EXPR\n\tand SPLICE_EXPR.\n\t* constraint.cc (diagnose_trait_expr): Add CPTK_IS_CONSTEVAL_ONLY case.\n\t* cp-gimplify.cc (immediate_escalating_function_p): No longer static.\n\t(promote_function_to_consteval): Likewise.\n\t(cp_gimplify_expr) <case CALL_EXPR>: Detect any surviving consteval-only\n\texpressions.\n\t<case CP_BUILT_IN_IS_STRING_LITERAL>: Handle.\n\t(wipe_consteval_only_r): New.\n\t(cp_fold_immediate_r): Detect invalid uses of consteval-only types.\n\tResolve any remaining TEMPLATE_ID_EXPRs. Clear consteval-only\n\tDECL_EXPRs.\n\t(cp_genericize_r): Wipe consteval-only vars from BIND_EXPR_VARS and\n\tBLOCK_VARS.\n\t* cp-objcp-common.cc (cp_common_init_ts): Mark META_TYPE, SPLICE_SCOPE,\n\tSPLICE_EXPR, and REFLECT_EXPR.\n\t* cp-trait.def (IS_CONSTEVAL_ONLY): New trait.\n\t* cp-tree.def (REFLECT_EXPR, META_TYPE, SPLICE_EXPR, SPLICE_SCOPE): New\n\ttrees.\n\t* cp-tree.h (enum cp_tree_index): Add CPTI_ANNOTATION_IDENTIFIER,\n\tCPTI_STD_META, and CPTI_META_INFO_TYPE.\n\t(std_meta_node): Define.\n\t(meta_info_type_node): Define.\n\t(annotation_identifier): Define.\n\t(REFLECTION_TYPE_P): Define.\n\t(REFLECT_EXPR_P): Define.\n\t(REFLECT_EXPR_HANDLE): Define.\n\t(enum reflect_kind): New.\n\t(REFLECT_EXPR_KIND): Define.\n\t(SET_REFLECT_EXPR_KIND): Define.\n\t(SPLICE_EXPR_EXPRESSION_P): Define.\n\t(SET_SPLICE_EXPR_EXPRESSION_P): Define.\n\t(SPLICE_EXPR_MEMBER_ACCESS_P): Define.\n\t(SET_SPLICE_EXPR_MEMBER_ACCESS_P): Define.\n\t(SPLICE_EXPR_ADDRESS_P): Define.\n\t(SET_SPLICE_EXPR_ADDRESS_P): Define.\n\t(SPLICE_SCOPE_EXPR): Define.\n\t(SPLICE_SCOPE_TYPE_P): Define.\n\t(WILDCARD_TYPE_P): Include SPLICE_SCOPE.\n\t(COMPONENT_REF_SPLICE_P): Define.\n\t(SCALAR_TYPE_P): Include REFLECTION_TYPE_P.\n\t(ENUM_BEING_DEFINED_P): Define.\n\t(OLD_PARM_DECL_P): Define.\n\t(MULTIPLE_NAMES_PARM_P): Define.\n\t(cp_preserve_using_decl): Declare.\n\t(DEF_OPERATOR, DEF_ASSN_OPERATOR): Include META.\n\t(struct ovl_op_info_t): Add meta_name member.\n\t(enum cp_built_in_function): Add CP_BUILT_IN_IS_STRING_LITERAL.\n\t(current_function_decl_without_access_scope): Declare.\n\t(dependent_namespace_p): Declare.\n\t(convert_reflect_constant_arg): Declare.\n\t(finish_base_specifier): Adjust declaration.\n\t(parsing_lambda_declarator): Declare.\n\t(fold_builtin_is_string_literal): Declare.\n\t(annotation_p): Declare.\n\t(finish_class_member_access_expr): Adjust declaration.\n\t(immediate_escalating_function_p): Declare.\n\t(promote_function_to_consteval): Declare.\n\t(is_std_allocator_allocate): Declare.\n\t(cxa_allocate_and_throw_exception): Declare.\n\t(enum value_cat): Define.\n\t(cxx_eval_constant_expression): Declare.\n\t(cxx_constexpr_quiet_p): Declare.\n\t(cxx_constexpr_manifestly_const_eval): Declare.\n\t(cxx_constexpr_caller): Declare.\n\t(cxx_constexpr_consteval_block): Declare.\n\t(init_reflection): Declare.\n\t(metafunction_p): Declare.\n\t(process_metafunction): Declare.\n\t(get_reflection): Declare.\n\t(get_null_reflection): Declare.\n\t(splice): Declare.\n\t(check_out_of_consteval_use): Declare.\n\t(consteval_only_p): Declare.\n\t(compare_reflections): Declare.\n\t(valid_splice_type_p): Declare.\n\t(valid_splice_scope_p): Declare.\n\t(check_splice_expr): Declare.\n\t(make_splice_scope): Declare.\n\t(dependent_splice_p): Declare.\n\t(reflection_mangle_prefix): Declare.\n\t(check_consteval_only_fn): Declare.\n\t* cvt.cc (convert_to_void): Call check_out_of_consteval_use.\n\t* cxx-pretty-print.cc (cxx_pretty_printer::unary_expression): New\n\tREFLECT_EXPR case.\n\t(cxx_pretty_printer::expression): Likewise.\n\t(cxx_pretty_printer::simple_type_specifier): New META_TYPE case.\n\t(cxx_pretty_printer::type_id): Likewise.\n\t* decl.cc (duplicate_decls): Merge parameter names for Reflection.\n\tMaybe set OLD_PARM_DECL_P.\n\t(initialize_predefined_identifiers): Add \"annotation \".\n\t(cxx_init_decl_processing): Initialize std_meta_node. Add\n\t__builtin_is_string_literal. Call init_reflection.\n\t(maybe_commonize_var): Do nothing for consteval_only_p.\n\t(check_initializer): Default-initialize std::meta::info.\n\t(make_rtl_for_nonlocal_decl): For consteval_only_p vars, set\n\tDECL_EXTERNAL and return early.\n\t(cp_finish_decl): Call check_out_of_consteval_use. Don't go\n\tcreating a varpool node for consteval_only_p.\n\t(get_tuple_size): Check the instantiation instead of the type.\n\t(grokfndecl): Call check_consteval_only_fn.\n\t(xref_basetypes): Stitch annotations onto BINFO_BASE_ACCESSES.\n\t(finish_enum_value_list): Clear ENUM_BEING_DEFINED_P.\n\t* decl2.cc (is_late_template_attribute): Handle all annotations as\n\tlate.\n\t(cp_check_const_attributes): Don't handle annotations here.\n\t(maybe_make_one_only): Do nothing for consteval_only_p.\n\t(mark_needed): Likewise.\n\t(min_vis_expr_r): Handle reflections.\n\t(prune_vars_needing_no_initialization): Skip consteval_only_p.\n\t(no_linkage_error): Return early for metafunctions.\n\t(c_parse_final_cleanups): Don't write out consteval_only_p vars. Avoid\n\tcomplaining about metafunctions.\n\t* error.cc (dump_type): New cases for CONST_DECL, META_TYPE, and\n\tSPLICE_SCOPE.\n\t(dump_type_prefix): New cases for META_TYPE and SPLICE_SCOPE.\n\t(dump_type_suffix): Likewise.\n\t(dump_decl): Dump SPLICE_EXPR.\n\t(dump_expr): Dump REFLECT_EXPR and SPLICE_EXPR.\n\t* init.cc (build_zero_init_1): Build a null reflection value.\n\t(perform_member_init): Call check_out_of_consteval_use.\n\t* lex.cc (DEF_OPERATOR, OPERATOR_TRANSITION): Update defines.\n\t* mangle.cc (write_type): Mangle META_TYPE.\n\t(write_expression): Handle REFLECT_EXPR.\n\t(write_reflection): New.\n\t(write_template_arg_literal): New REFLECT_EXPR case.\n\t(write_template_arg): Handle REFLECT_EXPR.\n\t* module.cc (trees_out::type_node): Handle META_TYPE.\n\t(trees_in::tree_node): Likewise.\n\t* name-lookup.cc (name_lookup::adl_type): std::meta is an associated\n\tnamespace of std::meta::info.\n\t(strip_using_decl): Don't strip when cp_preserve_using_decl.\n\t(handle_namespace_attrs): Handle annotations.\n\t(do_namespace_alias): Handle SPLICE_EXPR.\n\t(lookup_qualified_name): When cp_preserve_using_decl, don't do\n\tOVL_FUNCTION.\n\t(finish_using_directive): Detect annotations on using directive.\n\t* operators.def: Update for META_NAME.\n\t* parser.cc: New cp_preserve_using_decl global.\n\t(enum required_token): Add RT_CLOSE_SPLICE.\n\t(get_required_cpp_ttype): Return CPP_CLOSE_SPLICE for RT_CLOSE_SPLICE.\n\t(cp_parser_next_tokens_start_splice_type_spec_p): New.\n\t(cp_parser_next_tokens_can_start_splice_scope_spec_p): New.\n\t(cp_parser_splice_specifier): New.\n\t(cp_parser_splice_type_specifier): New.\n\t(cp_parser_splice_expression): New.\n\t(cp_parser_splice_scope_specifier): New.\n\t(cp_parser_splice_spec_is_nns_p): New.\n\t(cp_parser_nth_token_starts_splice_without_nns_p): New.\n\t(cp_parser_primary_expression): Handle CPP_OPEN_SPLICE. Give an\n\terror for ^^ outside reflection.\n\t(cp_parser_unqualified_id): Allow r.~typename [:R:].\n\t(cp_parser_nested_name_specifier_opt): Cope with splice-scope-specifier.\n\t(cp_parser_qualifying_entity): Parse splice-scope-specifier.\n\t(cp_parser_postfix_expression): Deal with [: :] after a typename.\n\t(cp_parser_postfix_dot_deref_expression): Parse & handle splices\n\tin a class member access. Pass splice_p to\n\tfinish_class_member_access_expr.\n\t(cp_parser_reflection_name): New.\n\t(cp_parser_reflect_expression): New.\n\t(cp_parser_unary_expression): Parse reflect-expression.\n\t(cp_parser_declaration): Parse splice-scope-specifier.\n\t(cp_parser_decomposition_declaration): Detect annotations on structured\n\tbindings.\n\t(cp_parser_decltype_expr): Parse splice-expression.\n\t(cp_parser_template_id): New parsed_templ argument. If it's nonnull,\n\tdon't parse the template name. Turn an assert into a condition.\n\t(cp_parser_type_specifier): Handle typename [: :].\n\t(cp_parser_simple_type_specifier): Parse splice-type-specifier.\n\t(cp_parser_enum_specifier): Set ENUM_BEING_DEFINED_P.\n\t(cp_parser_namespace_alias_definition): Parse splice-specifier.\n\t(cp_parser_using_directive): Likewise.\n\t(cp_parser_type_id_1): New bool * parameter to distinguish between\n\ttypes and type aliases. Set it.\n\t(cp_parser_type_id): Adjust the call to cp_parser_type_id_1.\n\t(cp_parser_template_type_arg): Likewise.\n\t(cp_parser_trailing_type_id): Likewise.\n\t(cp_parser_base_specifier): Handle annotations. Maybe give an error\n\tfor splice-scope-specifier. Parse splice-type-specifier. Pass\n\tannotations to finish_base_specifier.\n\t(cp_parser_annotation): New.\n\t(cp_parser_std_attribute_list): Detect mixing annotations and attributes\n\tin the same list.\n\t(cp_parser_annotation_list): New.\n\t(cp_parser_std_attribute_spec): Parse annotations.\n\t(cp_parser_skip_balanced_tokens): Also handle CPP_OPEN_SPLICE\n\tand CPP_CLOSE_SPLICE.\n\t(cp_parser_type_requirement): Parse splice-type-specifier.\n\t(cp_parser_lookup_name): Also consider dependent namespaces. Don't\n\tcall check_accessibility_of_qualified_id for USING_DECLs.\n\t(cp_parser_required_error): Handle RT_CLOSE_SPLICE.\n\t* pt.cc (current_function_decl_without_access_scope): New.\n\t(verify_unstripped_args_1): REFLECT_EXPR_P is OK.\n\t(iterative_hash_template_arg): Handle REFLECT_EXPR.\n\t(convert_nontype_argument): Maybe give an error for REFLECTION_TYPE_P.\n\t(for_each_template_parm_r): Handle SPLICE_SCOPE.\n\t(instantiate_class_template): Handle annotations.\n\t(tsubst_pack_index): Make static.\n\t(tsubst_decl): Handle NAMESPACE_DECL.\n\t(tsubst_splice_scope): New.\n\t(tsubst_splice_expr): New.\n\t(tsubst): Don't return early for NAMESPACE_DECL. New META_TYPE case.\n\tHandle a splice-specifier that expanded into a NAMESPACE_DECL. Handle\n\tSPLICE_SCOPE, SPLICE_EXPR, and TEMPLATE_ID_EXPR.\n\t(tsubst_scope): Also accept NAMESPACE_DECL.\n\t(tsubst_qualified_id): Check dependent_namespace_p.\n\t(tsubst_lambda_expr): Set LAMBDA_EXPR_CONSTEVAL_BLOCK_P.\n\t(tsubst_expr): Allow dependent_splice_p in an assert. Check\n\tCOMPONENT_REF_SPLICE_P and pass it to finish_class_member_access_expr.\n\t<case NAMESPACE_DECL>: Remove.\n\tNew REFLECT_EXPR and SPLICE_EXPR cases.\n\t(unify): Handle META_TYPE.\n\t(instantiate_body): Call check_consteval_only_fn.\n\t(tsubst_enum): Set ENUM_BEING_DEFINED_P.\n\t(dependent_type_p_r): A splice-scope-specifier is dependent.\n\t(dependent_namespace_p): New.\n\t(value_dependent_expression_p): Handle REFLECT_EXPR. Also handle\n\t[meta.reflection.access.context]/8.\n\t(type_dependent_expression_p): REFLECT_EXPR_P is not type-dependent.\n\t(convert_reflect_constant_arg): New.\n\t* search.cc (check_final_overrider): Adjust for CWG 3117.\n\t* semantics.cc (finish_base_specifier): Handle annotations.\n\t(parsing_lambda_declarator): No longer static.\n\t(finish_id_expression_1): Check dependent_namespace_p.\n\t(fold_builtin_is_string_literal): New.\n\t(trait_expr_value): Handle CPTK_IS_CONSTEVAL_ONLY.\n\t(finish_trait_expr): Likewise.\n\t* tree.cc (handle_annotation_attribute): New.\n\t(builtin_valid_in_constant_expr_p): Return true for\n\tCP_BUILT_IN_IS_STRING_LITERAL.\n\t(cp_tree_equal): Handle comparing REFLECT_EXPRs.\n\t(internal_attributes): Add \"annotation \".\n\t(annotation_p): New.\n\t* typeck.cc (finish_class_member_access_expr): New splice_p argument.\n\tHandle dependent splices. Implement splicing a base class subobject.\n\tHandle class member access using a splice-expression.\n\t(cp_build_binary_op): Handle comparing std::meta::infos.\n\t(check_return_expr): Call check_out_of_consteval_use.\n\t* metafns.gperf: New file.\n\t* metafns.h: New file.\n\t* reflect.cc: New file.\n\nlibcc1/ChangeLog:\n\n\t* libcp1plugin.cc (start_class_def): Update the call to\n\tfinish_base_specifier.\n\nlibcpp/ChangeLog:\n\n\t* charset.cc (_cpp_destroy_iconv): Destroy narrow_cset_desc and\n\tutf8_cset_desc.\n\t(cpp_translate_string): New.\n\t(cpp_valid_identifier): New.\n\t* include/cpplib.h: Add OPEN_SPLICE, CLOSE_SPLICE, and REFLECT_OP to\n\tTTYPE_TABLE.\n\t(cpp_translate_string): Declare.\n\t(cpp_valid_identifier): Declare.\n\t* internal.h (struct cpp_reader): Add reverse_narrow_cset_desc and\n\treverse_utf8_cset_desc fields.\n\t* lex.cc (_cpp_lex_direct): Emit CPP_CLOSE_SPLICE, CPP_REFLECT_OP,\n\tand CPP_OPEN_SPLICE tokens.\n\nlibstdc++-v3/ChangeLog:\n\n\t* include/Makefile.am (std_headers): Add ${std_srcdir}/meta.\n\t* include/Makefile.in: Regenerate.\n\t* include/bits/iterator_concepts.h (std::ranges::__access::__begin): Add\n\tconstexpr.\n\t* include/bits/version.def (reflection): New.\n\t* include/bits/version.h: Regenerate.\n\t* include/precompiled/stdc++.h: Include <meta> for C++26.\n\t* include/std/meta: New file.\n\t* include/std/type_traits (std::is_reflection): New trait.\n\t(std::is_fundamental): Include is_reflection for C++26 -freflection.\n\t(std::is_reflection_v): New variable template.\n\t(std::is_consteval_only): New trait.\n\t(std::is_consteval_only_v): New variable template.\n\t* src/c++23/std.cc.in: Add <meta> exports.\n\t* testsuite/20_util/variable_templates_for_traits.cc: Add -freflection as\n\tdg-additional-options for C++26. Add std::is_reflection_v test in that case.\n\t* testsuite/20_util/is_consteval_only/requirements/explicit_instantiation.cc: New test.\n\t* testsuite/20_util/is_consteval_only/requirements/typedefs.cc: New test.\n\t* testsuite/20_util/is_consteval_only/value.cc: New test.\n\t* testsuite/20_util/is_reflection/requirements/explicit_instantiation.cc: New test.\n\t* testsuite/20_util/is_reflection/requirements/typedefs.cc: New test.\n\t* testsuite/20_util/is_reflection/value.cc: New test.\n\ngcc/testsuite/ChangeLog:\n\n\t* g++.dg/DRs/dr2581-1.C: Add -freflection.\n\t* g++.dg/DRs/dr2581-2.C: Likewise.\n\t* g++.dg/reflect/access_context1.C: New test.\n\t* g++.dg/reflect/access_context2.C: New test.\n\t* g++.dg/reflect/access_context3.C: New test.\n\t* g++.dg/reflect/adl1.C: New test.\n\t* g++.dg/reflect/alignment_of1.C: New test.\n\t* g++.dg/reflect/alignment_of2.C: New test.\n\t* g++.dg/reflect/annotations1.C: New test.\n\t* g++.dg/reflect/annotations2.C: New test.\n\t* g++.dg/reflect/annotations3.C: New test.\n\t* g++.dg/reflect/annotations4.C: New test.\n\t* g++.dg/reflect/annotations5.C: New test.\n\t* g++.dg/reflect/annotations6.C: New test.\n\t* g++.dg/reflect/annotations7.C: New test.\n\t* g++.dg/reflect/anon1.C: New test.\n\t* g++.dg/reflect/anon2.C: New test.\n\t* g++.dg/reflect/anon3.C: New test.\n\t* g++.dg/reflect/bases_of1.C: New test.\n\t* g++.dg/reflect/bases_of2.C: New test.\n\t* g++.dg/reflect/bases_of3.C: New test.\n\t* g++.dg/reflect/bit_size_of1.C: New test.\n\t* g++.dg/reflect/bitfield1.C: New test.\n\t* g++.dg/reflect/can_substitute1.C: New test.\n\t* g++.dg/reflect/class1.C: New test.\n\t* g++.dg/reflect/class2.C: New test.\n\t* g++.dg/reflect/common_reference1.C: New test.\n\t* g++.dg/reflect/common_type1.C: New test.\n\t* g++.dg/reflect/compare1.C: New test.\n\t* g++.dg/reflect/compare10.C: New test.\n\t* g++.dg/reflect/compare2.C: New test.\n\t* g++.dg/reflect/compare3.C: New test.\n\t* g++.dg/reflect/compare4.C: New test.\n\t* g++.dg/reflect/compare5.C: New test.\n\t* g++.dg/reflect/compare6.C: New test.\n\t* g++.dg/reflect/compare7.C: New test.\n\t* g++.dg/reflect/compare8.C: New test.\n\t* g++.dg/reflect/compare9.C: New test.\n\t* g++.dg/reflect/compat1.C: New test.\n\t* g++.dg/reflect/complete1.C: New test.\n\t* g++.dg/reflect/constant_of1.C: New test.\n\t* g++.dg/reflect/constant_of2.C: New test.\n\t* g++.dg/reflect/constant_of3.C: New test.\n\t* g++.dg/reflect/constant_of4.C: New test.\n\t* g++.dg/reflect/constant_of5.C: New test.\n\t* g++.dg/reflect/constant_of6.C: New test.\n\t* g++.dg/reflect/constant_of7.C: New test.\n\t* g++.dg/reflect/constant_of8.C: New test.\n\t* g++.dg/reflect/constant_of9.C: New test.\n\t* g++.dg/reflect/crash1.C: New test.\n\t* g++.dg/reflect/crash10.C: New test.\n\t* g++.dg/reflect/crash11.C: New test.\n\t* g++.dg/reflect/crash12.C: New test.\n\t* g++.dg/reflect/crash13.C: New test.\n\t* g++.dg/reflect/crash14.C: New test.\n\t* g++.dg/reflect/crash15.C: New test.\n\t* g++.dg/reflect/crash16.C: New test.\n\t* g++.dg/reflect/crash17.C: New test.\n\t* g++.dg/reflect/crash18.C: New test.\n\t* g++.dg/reflect/crash2.C: New test.\n\t* g++.dg/reflect/crash3.C: New test.\n\t* g++.dg/reflect/crash4.C: New test.\n\t* g++.dg/reflect/crash5.C: New test.\n\t* g++.dg/reflect/crash6.C: New test.\n\t* g++.dg/reflect/crash7.C: New test.\n\t* g++.dg/reflect/crash8.C: New test.\n\t* g++.dg/reflect/crash9.C: New test.\n\t* g++.dg/reflect/data_member_spec1.C: New test.\n\t* g++.dg/reflect/data_member_spec2.C: New test.\n\t* g++.dg/reflect/data_member_spec3.C: New test.\n\t* g++.dg/reflect/data_member_spec4.C: New test.\n\t* g++.dg/reflect/dealias1.C: New test.\n\t* g++.dg/reflect/dealias2.C: New test.\n\t* g++.dg/reflect/dealias3.C: New test.\n\t* g++.dg/reflect/define_aggregate1.C: New test.\n\t* g++.dg/reflect/define_aggregate2.C: New test.\n\t* g++.dg/reflect/define_aggregate3.C: New test.\n\t* g++.dg/reflect/define_aggregate4.C: New test.\n\t* g++.dg/reflect/define_aggregate5.C: New test.\n\t* g++.dg/reflect/define_static_array1.C: New test.\n\t* g++.dg/reflect/define_static_array2.C: New test.\n\t* g++.dg/reflect/define_static_array3.C: New test.\n\t* g++.dg/reflect/define_static_array4.C: New test.\n\t* g++.dg/reflect/define_static_object1.C: New test.\n\t* g++.dg/reflect/define_static_object2.C: New test.\n\t* g++.dg/reflect/define_static_string1.C: New test.\n\t* g++.dg/reflect/dep1.C: New test.\n\t* g++.dg/reflect/dep10.C: New test.\n\t* g++.dg/reflect/dep11.C: New test.\n\t* g++.dg/reflect/dep2.C: New test.\n\t* g++.dg/reflect/dep3.C: New test.\n\t* g++.dg/reflect/dep4.C: New test.\n\t* g++.dg/reflect/dep5.C: New test.\n\t* g++.dg/reflect/dep6.C: New test.\n\t* g++.dg/reflect/dep7.C: New test.\n\t* g++.dg/reflect/dep8.C: New test.\n\t* g++.dg/reflect/dep9.C: New test.\n\t* g++.dg/reflect/diag1.C: New test.\n\t* g++.dg/reflect/diag2.C: New test.\n\t* g++.dg/reflect/diag3.C: New test.\n\t* g++.dg/reflect/diag4.C: New test.\n\t* g++.dg/reflect/display_string_of1.C: New test.\n\t* g++.dg/reflect/eh1.C: New test.\n\t* g++.dg/reflect/eh2.C: New test.\n\t* g++.dg/reflect/eh3.C: New test.\n\t* g++.dg/reflect/eh4.C: New test.\n\t* g++.dg/reflect/eh5.C: New test.\n\t* g++.dg/reflect/eh6.C: New test.\n\t* g++.dg/reflect/eh7.C: New test.\n\t* g++.dg/reflect/eh8.C: New test.\n\t* g++.dg/reflect/eh9.C: New test.\n\t* g++.dg/reflect/enumerators_of1.C: New test.\n\t* g++.dg/reflect/error1.C: New test.\n\t* g++.dg/reflect/error10.C: New test.\n\t* g++.dg/reflect/error2.C: New test.\n\t* g++.dg/reflect/error3.C: New test.\n\t* g++.dg/reflect/error4.C: New test.\n\t* g++.dg/reflect/error5.C: New test.\n\t* g++.dg/reflect/error6.C: New test.\n\t* g++.dg/reflect/error8.C: New test.\n\t* g++.dg/reflect/error9.C: New test.\n\t* g++.dg/reflect/expr1.C: New test.\n\t* g++.dg/reflect/expr10.C: New test.\n\t* g++.dg/reflect/expr11.C: New test.\n\t* g++.dg/reflect/expr12.C: New test.\n\t* g++.dg/reflect/expr13.C: New test.\n\t* g++.dg/reflect/expr14.C: New test.\n\t* g++.dg/reflect/expr2.C: New test.\n\t* g++.dg/reflect/expr3.C: New test.\n\t* g++.dg/reflect/expr4.C: New test.\n\t* g++.dg/reflect/expr5.C: New test.\n\t* g++.dg/reflect/expr6.C: New test.\n\t* g++.dg/reflect/expr7.C: New test.\n\t* g++.dg/reflect/expr8.C: New test.\n\t* g++.dg/reflect/expr9.C: New test.\n\t* g++.dg/reflect/extract1.C: New test.\n\t* g++.dg/reflect/extract2.C: New test.\n\t* g++.dg/reflect/extract3.C: New test.\n\t* g++.dg/reflect/extract4.C: New test.\n\t* g++.dg/reflect/extract5.C: New test.\n\t* g++.dg/reflect/extract6.C: New test.\n\t* g++.dg/reflect/extract7.C: New test.\n\t* g++.dg/reflect/extract8.C: New test.\n\t* g++.dg/reflect/extract9.C: New test.\n\t* g++.dg/reflect/feat1.C: New test.\n\t* g++.dg/reflect/feat2.C: New test.\n\t* g++.dg/reflect/has_c_language_linkage1.C: New test.\n\t* g++.dg/reflect/has_default_argument1.C: New test.\n\t* g++.dg/reflect/has_default_argument2.C: New test.\n\t* g++.dg/reflect/has_default_member_initializer1.C: New test.\n\t* g++.dg/reflect/has_ellipsis_parameter1.C: New test.\n\t* g++.dg/reflect/has_external_linkage1.C: New test.\n\t* g++.dg/reflect/has_external_linkage2.C: New test.\n\t* g++.dg/reflect/has_identifier1.C: New test.\n\t* g++.dg/reflect/has_identifier2.C: New test.\n\t* g++.dg/reflect/has_internal_linkage1.C: New test.\n\t* g++.dg/reflect/has_internal_linkage2.C: New test.\n\t* g++.dg/reflect/has_linkage1.C: New test.\n\t* g++.dg/reflect/has_module_linkage1.C: New test.\n\t* g++.dg/reflect/has_module_linkage2.C: New test.\n\t* g++.dg/reflect/has_parent1.C: New test.\n\t* g++.dg/reflect/has_template_arguments1.C: New test.\n\t* g++.dg/reflect/has_template_arguments2.C: New test.\n\t* g++.dg/reflect/has_template_arguments3.C: New test.\n\t* g++.dg/reflect/has_template_arguments4.C: New test.\n\t* g++.dg/reflect/identifier_of1.C: New test.\n\t* g++.dg/reflect/identifier_of2.C: New test.\n\t* g++.dg/reflect/init1.C: New test.\n\t* g++.dg/reflect/init10.C: New test.\n\t* g++.dg/reflect/init11.C: New test.\n\t* g++.dg/reflect/init12.C: New test.\n\t* g++.dg/reflect/init13.C: New test.\n\t* g++.dg/reflect/init14.C: New test.\n\t* g++.dg/reflect/init15.C: New test.\n\t* g++.dg/reflect/init16.C: New test.\n\t* g++.dg/reflect/init17.C: New test.\n\t* g++.dg/reflect/init2.C: New test.\n\t* g++.dg/reflect/init3.C: New test.\n\t* g++.dg/reflect/init4.C: New test.\n\t* g++.dg/reflect/init5.C: New test.\n\t* g++.dg/reflect/init6.C: New test.\n\t* g++.dg/reflect/init7.C: New test.\n\t* g++.dg/reflect/init8.C: New test.\n\t* g++.dg/reflect/init9.C: New test.\n\t* g++.dg/reflect/is_accessible1.C: New test.\n\t* g++.dg/reflect/is_accessible2.C: New test.\n\t* g++.dg/reflect/is_alias_template1.C: New test.\n\t* g++.dg/reflect/is_assignment1.C: New test.\n\t* g++.dg/reflect/is_bit_field1.C: New test.\n\t* g++.dg/reflect/is_class_member1.C: New test.\n\t* g++.dg/reflect/is_class_template1.C: New test.\n\t* g++.dg/reflect/is_complete_type1.C: New test.\n\t* g++.dg/reflect/is_complete_type2.C: New test.\n\t* g++.dg/reflect/is_concept1.C: New test.\n\t* g++.dg/reflect/is_const1.C: New test.\n\t* g++.dg/reflect/is_consteval_only1.C: New test.\n\t* g++.dg/reflect/is_constructible_type1.C: New test.\n\t* g++.dg/reflect/is_constructible_type2.C: New test.\n\t* g++.dg/reflect/is_constructor_template1.C: New test.\n\t* g++.dg/reflect/is_constuctor1.C: New test.\n\t* g++.dg/reflect/is_conversion_function1.C: New test.\n\t* g++.dg/reflect/is_conversion_function_template1.C: New test.\n\t* g++.dg/reflect/is_copy_assignment1.C: New test.\n\t* g++.dg/reflect/is_copy_constructor1.C: New test.\n\t* g++.dg/reflect/is_data_member_spec1.C: New test.\n\t* g++.dg/reflect/is_default_constructor1.C: New test.\n\t* g++.dg/reflect/is_defaulted1.C: New test.\n\t* g++.dg/reflect/is_defaulted2.C: New test.\n\t* g++.dg/reflect/is_deleted1.C: New test.\n\t* g++.dg/reflect/is_deleted2.C: New test.\n\t* g++.dg/reflect/is_destructor1.C: New test.\n\t* g++.dg/reflect/is_enumerable_type1.C: New test.\n\t* g++.dg/reflect/is_enumerator1.C: New test.\n\t* g++.dg/reflect/is_explicit1.C: New test.\n\t* g++.dg/reflect/is_explicit2.C: New test.\n\t* g++.dg/reflect/is_explicit_object_parameter1.C: New test.\n\t* g++.dg/reflect/is_final1.C: New test.\n\t* g++.dg/reflect/is_function1.C: New test.\n\t* g++.dg/reflect/is_function2.C: New test.\n\t* g++.dg/reflect/is_function3.C: New test.\n\t* g++.dg/reflect/is_function_parameter1.C: New test.\n\t* g++.dg/reflect/is_function_parameter2.C: New test.\n\t* g++.dg/reflect/is_function_template1.C: New test.\n\t* g++.dg/reflect/is_function_template2.C: New test.\n\t* g++.dg/reflect/is_function_type1.C: New test.\n\t* g++.dg/reflect/is_literal_operator1.C: New test.\n\t* g++.dg/reflect/is_literal_operator_template1.C: New test.\n\t* g++.dg/reflect/is_lrvalue_reference_qualified1.C: New test.\n\t* g++.dg/reflect/is_move_assignment1.C: New test.\n\t* g++.dg/reflect/is_move_constructor1.C: New test.\n\t* g++.dg/reflect/is_mutable_member1.C: New test.\n\t* g++.dg/reflect/is_namespace1.C: New test.\n\t* g++.dg/reflect/is_namespace_alias1.C: New test.\n\t* g++.dg/reflect/is_namespace_member1.C: New test.\n\t* g++.dg/reflect/is_noexcept1.C: New test.\n\t* g++.dg/reflect/is_noexcept2.C: New test.\n\t* g++.dg/reflect/is_noexcept3.C: New test.\n\t* g++.dg/reflect/is_noexcept4.C: New test.\n\t* g++.dg/reflect/is_nonstatic_data_member1.C: New test.\n\t* g++.dg/reflect/is_object1.C: New test.\n\t* g++.dg/reflect/is_object2.C: New test.\n\t* g++.dg/reflect/is_operator_function1.C: New test.\n\t* g++.dg/reflect/is_operator_function_template1.C: New test.\n\t* g++.dg/reflect/is_override1.C: New test.\n\t* g++.dg/reflect/is_pure_virtual1.C: New test.\n\t* g++.dg/reflect/is_special_member_function1.C: New test.\n\t* g++.dg/reflect/is_static_member1.C: New test.\n\t* g++.dg/reflect/is_string_literal1.C: New test.\n\t* g++.dg/reflect/is_structured_binding1.C: New test.\n\t* g++.dg/reflect/is_structured_binding2.C: New test.\n\t* g++.dg/reflect/is_template1.C: New test.\n\t* g++.dg/reflect/is_template2.C: New test.\n\t* g++.dg/reflect/is_type1.C: New test.\n\t* g++.dg/reflect/is_type_alias1.C: New test.\n\t* g++.dg/reflect/is_type_alias2.C: New test.\n\t* g++.dg/reflect/is_type_alias3.C: New test.\n\t* g++.dg/reflect/is_user_declared1.C: New test.\n\t* g++.dg/reflect/is_user_declared2.C: New test.\n\t* g++.dg/reflect/is_user_provided1.C: New test.\n\t* g++.dg/reflect/is_user_provided2.C: New test.\n\t* g++.dg/reflect/is_variable1.C: New test.\n\t* g++.dg/reflect/is_variable_template1.C: New test.\n\t* g++.dg/reflect/is_virtual1.C: New test.\n\t* g++.dg/reflect/is_volatile1.C: New test.\n\t* g++.dg/reflect/lex1.C: New test.\n\t* g++.dg/reflect/lex2.C: New test.\n\t* g++.dg/reflect/mangle1.C: New test.\n\t* g++.dg/reflect/member-visibility1.C: New test.\n\t* g++.dg/reflect/member-visibility2.C: New test.\n\t* g++.dg/reflect/member1.C: New test.\n\t* g++.dg/reflect/member10.C: New test.\n\t* g++.dg/reflect/member11.C: New test.\n\t* g++.dg/reflect/member12.C: New test.\n\t* g++.dg/reflect/member13.C: New test.\n\t* g++.dg/reflect/member14.C: New test.\n\t* g++.dg/reflect/member15.C: New test.\n\t* g++.dg/reflect/member16.C: New test.\n\t* g++.dg/reflect/member17.C: New test.\n\t* g++.dg/reflect/member18.C: New test.\n\t* g++.dg/reflect/member19.C: New test.\n\t* g++.dg/reflect/member2.C: New test.\n\t* g++.dg/reflect/member20.C: New test.\n\t* g++.dg/reflect/member3.C: New test.\n\t* g++.dg/reflect/member4.C: New test.\n\t* g++.dg/reflect/member5.C: New test.\n\t* g++.dg/reflect/member6.C: New test.\n\t* g++.dg/reflect/member7.C: New test.\n\t* g++.dg/reflect/member8.C: New test.\n\t* g++.dg/reflect/member9.C: New test.\n\t* g++.dg/reflect/members_of1.C: New test.\n\t* g++.dg/reflect/members_of2.C: New test.\n\t* g++.dg/reflect/members_of3.C: New test.\n\t* g++.dg/reflect/members_of4.C: New test.\n\t* g++.dg/reflect/members_of5.C: New test.\n\t* g++.dg/reflect/members_of6.C: New test.\n\t* g++.dg/reflect/members_of7.C: New test.\n\t* g++.dg/reflect/metafn-ptr1.C: New test.\n\t* g++.dg/reflect/ns1.C: New test.\n\t* g++.dg/reflect/ns2.C: New test.\n\t* g++.dg/reflect/ns3.C: New test.\n\t* g++.dg/reflect/ns4.C: New test.\n\t* g++.dg/reflect/ns5.C: New test.\n\t* g++.dg/reflect/ns6.C: New test.\n\t* g++.dg/reflect/null1.C: New test.\n\t* g++.dg/reflect/null2.C: New test.\n\t* g++.dg/reflect/null3.C: New test.\n\t* g++.dg/reflect/null4.C: New test.\n\t* g++.dg/reflect/null5.C: New test.\n\t* g++.dg/reflect/object_of1.C: New test.\n\t* g++.dg/reflect/object_of2.C: New test.\n\t* g++.dg/reflect/odr1.C: New test.\n\t* g++.dg/reflect/offset_of1.C: New test.\n\t* g++.dg/reflect/operator_of1.C: New test.\n\t* g++.dg/reflect/override1.C: New test.\n\t* g++.dg/reflect/p2996-1.C: New test.\n\t* g++.dg/reflect/p2996-10.C: New test.\n\t* g++.dg/reflect/p2996-11.C: New test.\n\t* g++.dg/reflect/p2996-12.C: New test.\n\t* g++.dg/reflect/p2996-13.C: New test.\n\t* g++.dg/reflect/p2996-14.C: New test.\n\t* g++.dg/reflect/p2996-15.C: New test.\n\t* g++.dg/reflect/p2996-16.C: New test.\n\t* g++.dg/reflect/p2996-17.C: New test.\n\t* g++.dg/reflect/p2996-18.C: New test.\n\t* g++.dg/reflect/p2996-19.C: New test.\n\t* g++.dg/reflect/p2996-2.C: New test.\n\t* g++.dg/reflect/p2996-20.C: New test.\n\t* g++.dg/reflect/p2996-21.C: New test.\n\t* g++.dg/reflect/p2996-3.C: New test.\n\t* g++.dg/reflect/p2996-4.C: New test.\n\t* g++.dg/reflect/p2996-5.C: New test.\n\t* g++.dg/reflect/p2996-6.C: New test.\n\t* g++.dg/reflect/p2996-7.C: New test.\n\t* g++.dg/reflect/p2996-8.C: New test.\n\t* g++.dg/reflect/p2996-9.C: New test.\n\t* g++.dg/reflect/p3394-1.C: New test.\n\t* g++.dg/reflect/p3491-1.C: New test.\n\t* g++.dg/reflect/p3491-2.C: New test.\n\t* g++.dg/reflect/p3491-3.C: New test.\n\t* g++.dg/reflect/pack-index1.C: New test.\n\t* g++.dg/reflect/parameters_of1.C: New test.\n\t* g++.dg/reflect/parameters_of2.C: New test.\n\t* g++.dg/reflect/parameters_of3.C: New test.\n\t* g++.dg/reflect/parameters_of4.C: New test.\n\t* g++.dg/reflect/parameters_of5.C: New test.\n\t* g++.dg/reflect/parameters_of6.C: New test.\n\t* g++.dg/reflect/parent_of1.C: New test.\n\t* g++.dg/reflect/parm1.C: New test.\n\t* g++.dg/reflect/parm2.C: New test.\n\t* g++.dg/reflect/parm3.C: New test.\n\t* g++.dg/reflect/parm4.C: New test.\n\t* g++.dg/reflect/pr122634-1.C: New test.\n\t* g++.dg/reflect/pr122634-2.C: New test.\n\t* g++.dg/reflect/qrn1.C: New test.\n\t* g++.dg/reflect/qrn2.C: New test.\n\t* g++.dg/reflect/range_args.C: New test.\n\t* g++.dg/reflect/reflect_constant1.C: New test.\n\t* g++.dg/reflect/reflect_constant2.C: New test.\n\t* g++.dg/reflect/reflect_constant3.C: New test.\n\t* g++.dg/reflect/reflect_constant4.C: New test.\n\t* g++.dg/reflect/reflect_constant5.C: New test.\n\t* g++.dg/reflect/reflect_constant6.C: New test.\n\t* g++.dg/reflect/reflect_constant7.C: New test.\n\t* g++.dg/reflect/reflect_constant8.C: New test.\n\t* g++.dg/reflect/reflect_constant9.C: New test.\n\t* g++.dg/reflect/reflect_constant_array1.C: New test.\n\t* g++.dg/reflect/reflect_constant_array2.C: New test.\n\t* g++.dg/reflect/reflect_constant_array3.C: New test.\n\t* g++.dg/reflect/reflect_constant_array4.C: New test.\n\t* g++.dg/reflect/reflect_constant_string1.C: New test.\n\t* g++.dg/reflect/reflect_constant_string2.C: New test.\n\t* g++.dg/reflect/reflect_function1.C: New test.\n\t* g++.dg/reflect/reflect_function2.C: New test.\n\t* g++.dg/reflect/reflect_object1.C: New test.\n\t* g++.dg/reflect/reflect_object2.C: New test.\n\t* g++.dg/reflect/reflect_object3.C: New test.\n\t* g++.dg/reflect/reflect_object4.C: New test.\n\t* g++.dg/reflect/return_type_of1.C: New test.\n\t* g++.dg/reflect/serialize1.C: New test.\n\t* g++.dg/reflect/serialize2.C: New test.\n\t* g++.dg/reflect/size_of1.C: New test.\n\t* g++.dg/reflect/source_location_of1.C: New test.\n\t* g++.dg/reflect/source_location_of2.C: New test.\n\t* g++.dg/reflect/splice1.C: New test.\n\t* g++.dg/reflect/splice2.C: New test.\n\t* g++.dg/reflect/splice3.C: New test.\n\t* g++.dg/reflect/splice4.C: New test.\n\t* g++.dg/reflect/splice5.C: New test.\n\t* g++.dg/reflect/splice6.C: New test.\n\t* g++.dg/reflect/splice7.C: New test.\n\t* g++.dg/reflect/splicing-base1.C: New test.\n\t* g++.dg/reflect/splicing-base2.C: New test.\n\t* g++.dg/reflect/splicing-base3.C: New test.\n\t* g++.dg/reflect/splicing-base4.C: New test.\n\t* g++.dg/reflect/storage_duration1.C: New test.\n\t* g++.dg/reflect/storage_duration2.C: New test.\n\t* g++.dg/reflect/storage_duration3.C: New test.\n\t* g++.dg/reflect/subobjects_of1.C: New test.\n\t* g++.dg/reflect/substitute1.C: New test.\n\t* g++.dg/reflect/substitute2.C: New test.\n\t* g++.dg/reflect/symbol_of1.C: New test.\n\t* g++.dg/reflect/symbol_of2.C: New test.\n\t* g++.dg/reflect/template_arguments_of1.C: New test.\n\t* g++.dg/reflect/template_arguments_of2.C: New test.\n\t* g++.dg/reflect/template_arguments_of3.C: New test.\n\t* g++.dg/reflect/template_of1.C: New test.\n\t* g++.dg/reflect/template_of2.C: New test.\n\t* g++.dg/reflect/template_of3.C: New test.\n\t* g++.dg/reflect/tuple1.C: New test.\n\t* g++.dg/reflect/tuple2.C: New test.\n\t* g++.dg/reflect/type1.C: New test.\n\t* g++.dg/reflect/type10.C: New test.\n\t* g++.dg/reflect/type2.C: New test.\n\t* g++.dg/reflect/type3.C: New test.\n\t* g++.dg/reflect/type4.C: New test.\n\t* g++.dg/reflect/type5.C: New test.\n\t* g++.dg/reflect/type6.C: New test.\n\t* g++.dg/reflect/type7.C: New test.\n\t* g++.dg/reflect/type8.C: New test.\n\t* g++.dg/reflect/type9.C: New test.\n\t* g++.dg/reflect/type_of1.C: New test.\n\t* g++.dg/reflect/type_of2.C: New test.\n\t* g++.dg/reflect/type_rels1.C: New test.\n\t* g++.dg/reflect/type_trait1.C: New test.\n\t* g++.dg/reflect/type_trait10.C: New test.\n\t* g++.dg/reflect/type_trait11.C: New test.\n\t* g++.dg/reflect/type_trait12.C: New test.\n\t* g++.dg/reflect/type_trait13.C: New test.\n\t* g++.dg/reflect/type_trait2.C: New test.\n\t* g++.dg/reflect/type_trait3.C: New test.\n\t* g++.dg/reflect/type_trait4.C: New test.\n\t* g++.dg/reflect/type_trait5.C: New test.\n\t* g++.dg/reflect/type_trait6.C: New test.\n\t* g++.dg/reflect/type_trait8.C: New test.\n\t* g++.dg/reflect/type_trait9.C: New test.\n\t* g++.dg/reflect/u8display_string_of1.C: New test.\n\t* g++.dg/reflect/u8identifier_of1.C: New test.\n\t* g++.dg/reflect/u8symbol_of1.C: New test.\n\t* g++.dg/reflect/underlying_type1.C: New test.\n\t* g++.dg/reflect/using1.C: New test.\n\t* g++.dg/reflect/value_or_object1.C: New test.\n\t* g++.dg/reflect/variable_of1.C: New test.\n\t* g++.dg/reflect/variable_of2.C: New test.\n\t* g++.dg/reflect/variable_of3.C: New test.\n\t* g++.dg/reflect/variant1.C: New test.\n\t* g++.dg/reflect/variant2.C: New test.\n\t* g++.dg/reflect/vector1.C: New test.\n\t* g++.dg/reflect/visibility1.C: New test.\n\nCo-authored-by: Jakub Jelinek <jakub@redhat.com>\nSigned-off-by: Valentyn Yukhymenko <vyuhimenko@bloomberg.net>\nSigned-off-by: Alex Yesmanchyk <ayesmanchyk@bloomberg.net>\nSigned-off-by: Michael Levine <mlevine55@bloomberg.net>\nReviewed-by: Jason Merrill <jason@redhat.com>\n---\n gcc/attribs.cc | 42 +-\n gcc/c-family/c-attribs.cc | 14 +-\n gcc/c-family/c-cppbuiltin.cc | 4 +\n gcc/c-family/c.opt | 4 +\n gcc/cp/Make-lang.in | 20 +-\n gcc/cp/config-lang.in | 2 +-\n gcc/cp/constexpr.cc | 226 +-\n gcc/cp/constraint.cc | 3 +\n gcc/cp/cp-gimplify.cc | 107 +-\n gcc/cp/cp-objcp-common.cc | 4 +\n gcc/cp/cp-trait.def | 1 +\n gcc/cp/cp-tree.def | 18 +\n gcc/cp/cp-tree.h | 199 +-\n gcc/cp/cvt.cc | 6 +\n gcc/cp/cxx-pretty-print.cc | 20 +\n gcc/cp/decl.cc | 176 +-\n gcc/cp/decl2.cc | 96 +-\n gcc/cp/error.cc | 45 +-\n gcc/cp/init.cc | 7 +\n gcc/cp/lex.cc | 10 +-\n gcc/cp/mangle.cc | 147 +-\n gcc/cp/metafns.gperf | 643 ++\n gcc/cp/metafns.h | 1136 +++\n gcc/cp/module.cc | 9 +\n gcc/cp/name-lookup.cc | 34 +-\n gcc/cp/operators.def | 151 +-\n gcc/cp/parser.cc | 1172 ++-\n gcc/cp/pt.cc | 350 +-\n gcc/cp/reflect.cc | 8786 +++++++++++++++++\n gcc/cp/search.cc | 14 +-\n gcc/cp/semantics.cc | 73 +-\n gcc/cp/tree.cc | 92 +-\n gcc/cp/typeck.cc | 102 +-\n gcc/doc/invoke.texi | 6 +-\n gcc/dwarf2out.cc | 11 +-\n gcc/testsuite/g++.dg/DRs/dr2581-1.C | 4 +-\n gcc/testsuite/g++.dg/DRs/dr2581-2.C | 4 +-\n .../g++.dg/reflect/access_context1.C | 175 +\n .../g++.dg/reflect/access_context2.C | 15 +\n .../g++.dg/reflect/access_context3.C | 50 +\n gcc/testsuite/g++.dg/reflect/adl1.C | 16 +\n gcc/testsuite/g++.dg/reflect/alignment_of1.C | 165 +\n gcc/testsuite/g++.dg/reflect/alignment_of2.C | 27 +\n gcc/testsuite/g++.dg/reflect/annotations1.C | 139 +\n gcc/testsuite/g++.dg/reflect/annotations2.C | 44 +\n gcc/testsuite/g++.dg/reflect/annotations3.C | 174 +\n gcc/testsuite/g++.dg/reflect/annotations4.C | 79 +\n gcc/testsuite/g++.dg/reflect/annotations5.C | 30 +\n gcc/testsuite/g++.dg/reflect/annotations6.C | 25 +\n gcc/testsuite/g++.dg/reflect/annotations7.C | 12 +\n gcc/testsuite/g++.dg/reflect/anon1.C | 50 +\n gcc/testsuite/g++.dg/reflect/anon2.C | 43 +\n gcc/testsuite/g++.dg/reflect/anon3.C | 49 +\n gcc/testsuite/g++.dg/reflect/bases_of1.C | 188 +\n gcc/testsuite/g++.dg/reflect/bases_of2.C | 73 +\n gcc/testsuite/g++.dg/reflect/bases_of3.C | 88 +\n gcc/testsuite/g++.dg/reflect/bit_size_of1.C | 125 +\n gcc/testsuite/g++.dg/reflect/bitfield1.C | 12 +\n .../g++.dg/reflect/can_substitute1.C | 200 +\n gcc/testsuite/g++.dg/reflect/class1.C | 15 +\n gcc/testsuite/g++.dg/reflect/class2.C | 27 +\n .../g++.dg/reflect/common_reference1.C | 61 +\n gcc/testsuite/g++.dg/reflect/common_type1.C | 151 +\n gcc/testsuite/g++.dg/reflect/compare1.C | 38 +\n gcc/testsuite/g++.dg/reflect/compare10.C | 15 +\n gcc/testsuite/g++.dg/reflect/compare2.C | 17 +\n gcc/testsuite/g++.dg/reflect/compare3.C | 24 +\n gcc/testsuite/g++.dg/reflect/compare4.C | 27 +\n gcc/testsuite/g++.dg/reflect/compare5.C | 8 +\n gcc/testsuite/g++.dg/reflect/compare6.C | 12 +\n gcc/testsuite/g++.dg/reflect/compare7.C | 20 +\n gcc/testsuite/g++.dg/reflect/compare8.C | 67 +\n gcc/testsuite/g++.dg/reflect/compare9.C | 25 +\n gcc/testsuite/g++.dg/reflect/compat1.C | 13 +\n gcc/testsuite/g++.dg/reflect/complete1.C | 54 +\n gcc/testsuite/g++.dg/reflect/constant_of1.C | 40 +\n gcc/testsuite/g++.dg/reflect/constant_of2.C | 87 +\n gcc/testsuite/g++.dg/reflect/constant_of3.C | 60 +\n gcc/testsuite/g++.dg/reflect/constant_of4.C | 50 +\n gcc/testsuite/g++.dg/reflect/constant_of5.C | 86 +\n gcc/testsuite/g++.dg/reflect/constant_of6.C | 26 +\n gcc/testsuite/g++.dg/reflect/constant_of7.C | 54 +\n gcc/testsuite/g++.dg/reflect/constant_of8.C | 16 +\n gcc/testsuite/g++.dg/reflect/constant_of9.C | 9 +\n gcc/testsuite/g++.dg/reflect/crash1.C | 15 +\n gcc/testsuite/g++.dg/reflect/crash10.C | 11 +\n gcc/testsuite/g++.dg/reflect/crash11.C | 23 +\n gcc/testsuite/g++.dg/reflect/crash12.C | 8 +\n gcc/testsuite/g++.dg/reflect/crash13.C | 15 +\n gcc/testsuite/g++.dg/reflect/crash14.C | 7 +\n gcc/testsuite/g++.dg/reflect/crash15.C | 8 +\n gcc/testsuite/g++.dg/reflect/crash16.C | 43 +\n gcc/testsuite/g++.dg/reflect/crash17.C | 29 +\n gcc/testsuite/g++.dg/reflect/crash18.C | 6 +\n gcc/testsuite/g++.dg/reflect/crash2.C | 25 +\n gcc/testsuite/g++.dg/reflect/crash3.C | 8 +\n gcc/testsuite/g++.dg/reflect/crash4.C | 15 +\n gcc/testsuite/g++.dg/reflect/crash5.C | 14 +\n gcc/testsuite/g++.dg/reflect/crash6.C | 21 +\n gcc/testsuite/g++.dg/reflect/crash7.C | 22 +\n gcc/testsuite/g++.dg/reflect/crash8.C | 11 +\n gcc/testsuite/g++.dg/reflect/crash9.C | 10 +\n .../g++.dg/reflect/data_member_spec1.C | 119 +\n .../g++.dg/reflect/data_member_spec2.C | 113 +\n .../g++.dg/reflect/data_member_spec3.C | 29 +\n .../g++.dg/reflect/data_member_spec4.C | 29 +\n gcc/testsuite/g++.dg/reflect/dealias1.C | 36 +\n gcc/testsuite/g++.dg/reflect/dealias2.C | 14 +\n gcc/testsuite/g++.dg/reflect/dealias3.C | 32 +\n .../g++.dg/reflect/define_aggregate1.C | 108 +\n .../g++.dg/reflect/define_aggregate2.C | 44 +\n .../g++.dg/reflect/define_aggregate3.C | 217 +\n .../g++.dg/reflect/define_aggregate4.C | 225 +\n .../g++.dg/reflect/define_aggregate5.C | 25 +\n .../g++.dg/reflect/define_static_array1.C | 91 +\n .../g++.dg/reflect/define_static_array2.C | 30 +\n .../g++.dg/reflect/define_static_array3.C | 16 +\n .../g++.dg/reflect/define_static_array4.C | 17 +\n .../g++.dg/reflect/define_static_object1.C | 18 +\n .../g++.dg/reflect/define_static_object2.C | 18 +\n .../g++.dg/reflect/define_static_string1.C | 133 +\n gcc/testsuite/g++.dg/reflect/dep1.C | 14 +\n gcc/testsuite/g++.dg/reflect/dep10.C | 15 +\n gcc/testsuite/g++.dg/reflect/dep11.C | 18 +\n gcc/testsuite/g++.dg/reflect/dep2.C | 36 +\n gcc/testsuite/g++.dg/reflect/dep3.C | 33 +\n gcc/testsuite/g++.dg/reflect/dep4.C | 24 +\n gcc/testsuite/g++.dg/reflect/dep5.C | 29 +\n gcc/testsuite/g++.dg/reflect/dep6.C | 20 +\n gcc/testsuite/g++.dg/reflect/dep7.C | 23 +\n gcc/testsuite/g++.dg/reflect/dep8.C | 70 +\n gcc/testsuite/g++.dg/reflect/dep9.C | 40 +\n gcc/testsuite/g++.dg/reflect/diag1.C | 25 +\n gcc/testsuite/g++.dg/reflect/diag2.C | 25 +\n gcc/testsuite/g++.dg/reflect/diag3.C | 28 +\n gcc/testsuite/g++.dg/reflect/diag4.C | 17 +\n .../g++.dg/reflect/display_string_of1.C | 230 +\n gcc/testsuite/g++.dg/reflect/eh1.C | 355 +\n gcc/testsuite/g++.dg/reflect/eh2.C | 91 +\n gcc/testsuite/g++.dg/reflect/eh3.C | 22 +\n gcc/testsuite/g++.dg/reflect/eh4.C | 221 +\n gcc/testsuite/g++.dg/reflect/eh5.C | 103 +\n gcc/testsuite/g++.dg/reflect/eh6.C | 6 +\n gcc/testsuite/g++.dg/reflect/eh7.C | 22 +\n gcc/testsuite/g++.dg/reflect/eh8.C | 31 +\n gcc/testsuite/g++.dg/reflect/eh9.C | 11 +\n .../g++.dg/reflect/enumerators_of1.C | 189 +\n gcc/testsuite/g++.dg/reflect/error1.C | 18 +\n gcc/testsuite/g++.dg/reflect/error10.C | 39 +\n gcc/testsuite/g++.dg/reflect/error2.C | 19 +\n gcc/testsuite/g++.dg/reflect/error3.C | 5 +\n gcc/testsuite/g++.dg/reflect/error4.C | 11 +\n gcc/testsuite/g++.dg/reflect/error5.C | 19 +\n gcc/testsuite/g++.dg/reflect/error6.C | 24 +\n gcc/testsuite/g++.dg/reflect/error8.C | 37 +\n gcc/testsuite/g++.dg/reflect/error9.C | 6 +\n gcc/testsuite/g++.dg/reflect/expr1.C | 68 +\n gcc/testsuite/g++.dg/reflect/expr10.C | 39 +\n gcc/testsuite/g++.dg/reflect/expr11.C | 32 +\n gcc/testsuite/g++.dg/reflect/expr12.C | 30 +\n gcc/testsuite/g++.dg/reflect/expr13.C | 20 +\n gcc/testsuite/g++.dg/reflect/expr14.C | 16 +\n gcc/testsuite/g++.dg/reflect/expr2.C | 60 +\n gcc/testsuite/g++.dg/reflect/expr3.C | 47 +\n gcc/testsuite/g++.dg/reflect/expr4.C | 61 +\n gcc/testsuite/g++.dg/reflect/expr5.C | 22 +\n gcc/testsuite/g++.dg/reflect/expr6.C | 49 +\n gcc/testsuite/g++.dg/reflect/expr7.C | 11 +\n gcc/testsuite/g++.dg/reflect/expr8.C | 30 +\n gcc/testsuite/g++.dg/reflect/expr9.C | 73 +\n gcc/testsuite/g++.dg/reflect/extract1.C | 183 +\n gcc/testsuite/g++.dg/reflect/extract2.C | 140 +\n gcc/testsuite/g++.dg/reflect/extract3.C | 90 +\n gcc/testsuite/g++.dg/reflect/extract4.C | 30 +\n gcc/testsuite/g++.dg/reflect/extract5.C | 31 +\n gcc/testsuite/g++.dg/reflect/extract6.C | 20 +\n gcc/testsuite/g++.dg/reflect/extract7.C | 27 +\n gcc/testsuite/g++.dg/reflect/extract8.C | 18 +\n gcc/testsuite/g++.dg/reflect/extract9.C | 25 +\n gcc/testsuite/g++.dg/reflect/feat1.C | 17 +\n gcc/testsuite/g++.dg/reflect/feat2.C | 11 +\n .../g++.dg/reflect/has_c_language_linkage1.C | 156 +\n .../g++.dg/reflect/has_default_argument1.C | 132 +\n .../g++.dg/reflect/has_default_argument2.C | 32 +\n .../reflect/has_default_member_initializer1.C | 133 +\n .../g++.dg/reflect/has_ellipsis_parameter1.C | 148 +\n .../g++.dg/reflect/has_external_linkage1.C | 149 +\n .../g++.dg/reflect/has_external_linkage2.C | 13 +\n .../g++.dg/reflect/has_identifier1.C | 241 +\n .../g++.dg/reflect/has_identifier2.C | 57 +\n .../g++.dg/reflect/has_internal_linkage1.C | 149 +\n .../g++.dg/reflect/has_internal_linkage2.C | 13 +\n gcc/testsuite/g++.dg/reflect/has_linkage1.C | 149 +\n .../g++.dg/reflect/has_module_linkage1.C | 149 +\n .../g++.dg/reflect/has_module_linkage2.C | 13 +\n gcc/testsuite/g++.dg/reflect/has_parent1.C | 138 +\n .../g++.dg/reflect/has_template_arguments1.C | 111 +\n .../g++.dg/reflect/has_template_arguments2.C | 75 +\n .../g++.dg/reflect/has_template_arguments3.C | 48 +\n .../g++.dg/reflect/has_template_arguments4.C | 23 +\n gcc/testsuite/g++.dg/reflect/identifier_of1.C | 181 +\n gcc/testsuite/g++.dg/reflect/identifier_of2.C | 6 +\n gcc/testsuite/g++.dg/reflect/init1.C | 59 +\n gcc/testsuite/g++.dg/reflect/init10.C | 24 +\n gcc/testsuite/g++.dg/reflect/init11.C | 25 +\n gcc/testsuite/g++.dg/reflect/init12.C | 29 +\n gcc/testsuite/g++.dg/reflect/init13.C | 55 +\n gcc/testsuite/g++.dg/reflect/init14.C | 16 +\n gcc/testsuite/g++.dg/reflect/init15.C | 29 +\n gcc/testsuite/g++.dg/reflect/init16.C | 47 +\n gcc/testsuite/g++.dg/reflect/init17.C | 30 +\n gcc/testsuite/g++.dg/reflect/init2.C | 18 +\n gcc/testsuite/g++.dg/reflect/init3.C | 8 +\n gcc/testsuite/g++.dg/reflect/init4.C | 63 +\n gcc/testsuite/g++.dg/reflect/init5.C | 21 +\n gcc/testsuite/g++.dg/reflect/init6.C | 37 +\n gcc/testsuite/g++.dg/reflect/init7.C | 41 +\n gcc/testsuite/g++.dg/reflect/init8.C | 16 +\n gcc/testsuite/g++.dg/reflect/init9.C | 53 +\n gcc/testsuite/g++.dg/reflect/is_accessible1.C | 131 +\n gcc/testsuite/g++.dg/reflect/is_accessible2.C | 470 +\n .../g++.dg/reflect/is_alias_template1.C | 105 +\n gcc/testsuite/g++.dg/reflect/is_assignment1.C | 44 +\n gcc/testsuite/g++.dg/reflect/is_bit_field1.C | 144 +\n .../g++.dg/reflect/is_class_member1.C | 128 +\n .../g++.dg/reflect/is_class_template1.C | 105 +\n .../g++.dg/reflect/is_complete_type1.C | 109 +\n .../g++.dg/reflect/is_complete_type2.C | 25 +\n gcc/testsuite/g++.dg/reflect/is_concept1.C | 105 +\n gcc/testsuite/g++.dg/reflect/is_const1.C | 116 +\n .../g++.dg/reflect/is_consteval_only1.C | 83 +\n .../g++.dg/reflect/is_constructible_type1.C | 674 ++\n .../g++.dg/reflect/is_constructible_type2.C | 137 +\n .../g++.dg/reflect/is_constructor_template1.C | 56 +\n gcc/testsuite/g++.dg/reflect/is_constuctor1.C | 101 +\n .../g++.dg/reflect/is_conversion_function1.C | 56 +\n .../is_conversion_function_template1.C | 54 +\n .../g++.dg/reflect/is_copy_assignment1.C | 101 +\n .../g++.dg/reflect/is_copy_constructor1.C | 101 +\n .../g++.dg/reflect/is_data_member_spec1.C | 105 +\n .../g++.dg/reflect/is_default_constructor1.C | 101 +\n gcc/testsuite/g++.dg/reflect/is_defaulted1.C | 169 +\n gcc/testsuite/g++.dg/reflect/is_defaulted2.C | 64 +\n gcc/testsuite/g++.dg/reflect/is_deleted1.C | 154 +\n gcc/testsuite/g++.dg/reflect/is_deleted2.C | 90 +\n gcc/testsuite/g++.dg/reflect/is_destructor1.C | 124 +\n .../g++.dg/reflect/is_enumerable_type1.C | 106 +\n gcc/testsuite/g++.dg/reflect/is_enumerator1.C | 107 +\n gcc/testsuite/g++.dg/reflect/is_explicit1.C | 72 +\n gcc/testsuite/g++.dg/reflect/is_explicit2.C | 47 +\n .../reflect/is_explicit_object_parameter1.C | 165 +\n gcc/testsuite/g++.dg/reflect/is_final1.C | 56 +\n gcc/testsuite/g++.dg/reflect/is_function1.C | 105 +\n gcc/testsuite/g++.dg/reflect/is_function2.C | 44 +\n gcc/testsuite/g++.dg/reflect/is_function3.C | 15 +\n .../g++.dg/reflect/is_function_parameter1.C | 105 +\n .../g++.dg/reflect/is_function_parameter2.C | 13 +\n .../g++.dg/reflect/is_function_template1.C | 105 +\n .../g++.dg/reflect/is_function_template2.C | 44 +\n .../g++.dg/reflect/is_function_type1.C | 26 +\n .../g++.dg/reflect/is_literal_operator1.C | 56 +\n .../reflect/is_literal_operator_template1.C | 56 +\n .../reflect/is_lrvalue_reference_qualified1.C | 93 +\n .../g++.dg/reflect/is_move_assignment1.C | 101 +\n .../g++.dg/reflect/is_move_constructor1.C | 101 +\n .../g++.dg/reflect/is_mutable_member1.C | 133 +\n gcc/testsuite/g++.dg/reflect/is_namespace1.C | 105 +\n .../g++.dg/reflect/is_namespace_alias1.C | 105 +\n .../g++.dg/reflect/is_namespace_member1.C | 147 +\n gcc/testsuite/g++.dg/reflect/is_noexcept1.C | 180 +\n gcc/testsuite/g++.dg/reflect/is_noexcept2.C | 65 +\n gcc/testsuite/g++.dg/reflect/is_noexcept3.C | 175 +\n gcc/testsuite/g++.dg/reflect/is_noexcept4.C | 120 +\n .../reflect/is_nonstatic_data_member1.C | 127 +\n gcc/testsuite/g++.dg/reflect/is_object1.C | 105 +\n gcc/testsuite/g++.dg/reflect/is_object2.C | 15 +\n .../g++.dg/reflect/is_operator_function1.C | 56 +\n .../reflect/is_operator_function_template1.C | 57 +\n gcc/testsuite/g++.dg/reflect/is_override1.C | 154 +\n .../g++.dg/reflect/is_pure_virtual1.C | 48 +\n .../reflect/is_special_member_function1.C | 101 +\n .../g++.dg/reflect/is_static_member1.C | 127 +\n .../g++.dg/reflect/is_string_literal1.C | 40 +\n .../g++.dg/reflect/is_structured_binding1.C | 99 +\n .../g++.dg/reflect/is_structured_binding2.C | 35 +\n gcc/testsuite/g++.dg/reflect/is_template1.C | 105 +\n gcc/testsuite/g++.dg/reflect/is_template2.C | 9 +\n gcc/testsuite/g++.dg/reflect/is_type1.C | 105 +\n gcc/testsuite/g++.dg/reflect/is_type_alias1.C | 105 +\n gcc/testsuite/g++.dg/reflect/is_type_alias2.C | 29 +\n gcc/testsuite/g++.dg/reflect/is_type_alias3.C | 77 +\n .../g++.dg/reflect/is_user_declared1.C | 210 +\n .../g++.dg/reflect/is_user_declared2.C | 91 +\n .../g++.dg/reflect/is_user_provided1.C | 210 +\n .../g++.dg/reflect/is_user_provided2.C | 91 +\n gcc/testsuite/g++.dg/reflect/is_variable1.C | 104 +\n .../g++.dg/reflect/is_variable_template1.C | 105 +\n gcc/testsuite/g++.dg/reflect/is_virtual1.C | 60 +\n gcc/testsuite/g++.dg/reflect/is_volatile1.C | 116 +\n gcc/testsuite/g++.dg/reflect/lex1.C | 13 +\n gcc/testsuite/g++.dg/reflect/lex2.C | 21 +\n gcc/testsuite/g++.dg/reflect/mangle1.C | 252 +\n .../g++.dg/reflect/member-visibility1.C | 412 +\n .../g++.dg/reflect/member-visibility2.C | 61 +\n gcc/testsuite/g++.dg/reflect/member1.C | 99 +\n gcc/testsuite/g++.dg/reflect/member10.C | 42 +\n gcc/testsuite/g++.dg/reflect/member11.C | 19 +\n gcc/testsuite/g++.dg/reflect/member12.C | 37 +\n gcc/testsuite/g++.dg/reflect/member13.C | 46 +\n gcc/testsuite/g++.dg/reflect/member14.C | 27 +\n gcc/testsuite/g++.dg/reflect/member15.C | 177 +\n gcc/testsuite/g++.dg/reflect/member16.C | 86 +\n gcc/testsuite/g++.dg/reflect/member17.C | 402 +\n gcc/testsuite/g++.dg/reflect/member18.C | 744 ++\n gcc/testsuite/g++.dg/reflect/member19.C | 159 +\n gcc/testsuite/g++.dg/reflect/member2.C | 14 +\n gcc/testsuite/g++.dg/reflect/member20.C | 26 +\n gcc/testsuite/g++.dg/reflect/member3.C | 35 +\n gcc/testsuite/g++.dg/reflect/member4.C | 14 +\n gcc/testsuite/g++.dg/reflect/member5.C | 19 +\n gcc/testsuite/g++.dg/reflect/member6.C | 13 +\n gcc/testsuite/g++.dg/reflect/member7.C | 78 +\n gcc/testsuite/g++.dg/reflect/member8.C | 15 +\n gcc/testsuite/g++.dg/reflect/member9.C | 18 +\n gcc/testsuite/g++.dg/reflect/members_of1.C | 524 +\n gcc/testsuite/g++.dg/reflect/members_of2.C | 58 +\n gcc/testsuite/g++.dg/reflect/members_of3.C | 49 +\n gcc/testsuite/g++.dg/reflect/members_of4.C | 21 +\n gcc/testsuite/g++.dg/reflect/members_of5.C | 102 +\n gcc/testsuite/g++.dg/reflect/members_of6.C | 34 +\n gcc/testsuite/g++.dg/reflect/members_of7.C | 32 +\n gcc/testsuite/g++.dg/reflect/metafn-ptr1.C | 19 +\n gcc/testsuite/g++.dg/reflect/ns1.C | 37 +\n gcc/testsuite/g++.dg/reflect/ns2.C | 21 +\n gcc/testsuite/g++.dg/reflect/ns3.C | 15 +\n gcc/testsuite/g++.dg/reflect/ns4.C | 94 +\n gcc/testsuite/g++.dg/reflect/ns5.C | 45 +\n gcc/testsuite/g++.dg/reflect/ns6.C | 17 +\n gcc/testsuite/g++.dg/reflect/null1.C | 30 +\n gcc/testsuite/g++.dg/reflect/null2.C | 7 +\n gcc/testsuite/g++.dg/reflect/null3.C | 9 +\n gcc/testsuite/g++.dg/reflect/null4.C | 18 +\n gcc/testsuite/g++.dg/reflect/null5.C | 26 +\n gcc/testsuite/g++.dg/reflect/object_of1.C | 85 +\n gcc/testsuite/g++.dg/reflect/object_of2.C | 26 +\n gcc/testsuite/g++.dg/reflect/odr1.C | 29 +\n gcc/testsuite/g++.dg/reflect/offset_of1.C | 132 +\n gcc/testsuite/g++.dg/reflect/operator_of1.C | 250 +\n gcc/testsuite/g++.dg/reflect/override1.C | 39 +\n gcc/testsuite/g++.dg/reflect/p2996-1.C | 20 +\n gcc/testsuite/g++.dg/reflect/p2996-10.C | 15 +\n gcc/testsuite/g++.dg/reflect/p2996-11.C | 16 +\n gcc/testsuite/g++.dg/reflect/p2996-12.C | 24 +\n gcc/testsuite/g++.dg/reflect/p2996-13.C | 19 +\n gcc/testsuite/g++.dg/reflect/p2996-14.C | 17 +\n gcc/testsuite/g++.dg/reflect/p2996-15.C | 16 +\n gcc/testsuite/g++.dg/reflect/p2996-16.C | 18 +\n gcc/testsuite/g++.dg/reflect/p2996-17.C | 32 +\n gcc/testsuite/g++.dg/reflect/p2996-18.C | 46 +\n gcc/testsuite/g++.dg/reflect/p2996-19.C | 22 +\n gcc/testsuite/g++.dg/reflect/p2996-2.C | 27 +\n gcc/testsuite/g++.dg/reflect/p2996-20.C | 61 +\n gcc/testsuite/g++.dg/reflect/p2996-21.C | 68 +\n gcc/testsuite/g++.dg/reflect/p2996-3.C | 23 +\n gcc/testsuite/g++.dg/reflect/p2996-4.C | 27 +\n gcc/testsuite/g++.dg/reflect/p2996-5.C | 50 +\n gcc/testsuite/g++.dg/reflect/p2996-6.C | 18 +\n gcc/testsuite/g++.dg/reflect/p2996-7.C | 16 +\n gcc/testsuite/g++.dg/reflect/p2996-8.C | 14 +\n gcc/testsuite/g++.dg/reflect/p2996-9.C | 24 +\n gcc/testsuite/g++.dg/reflect/p3394-1.C | 174 +\n gcc/testsuite/g++.dg/reflect/p3491-1.C | 25 +\n gcc/testsuite/g++.dg/reflect/p3491-2.C | 50 +\n gcc/testsuite/g++.dg/reflect/p3491-3.C | 45 +\n gcc/testsuite/g++.dg/reflect/pack-index1.C | 28 +\n gcc/testsuite/g++.dg/reflect/parameters_of1.C | 35 +\n gcc/testsuite/g++.dg/reflect/parameters_of2.C | 41 +\n gcc/testsuite/g++.dg/reflect/parameters_of3.C | 41 +\n gcc/testsuite/g++.dg/reflect/parameters_of4.C | 12 +\n gcc/testsuite/g++.dg/reflect/parameters_of5.C | 43 +\n gcc/testsuite/g++.dg/reflect/parameters_of6.C | 8 +\n gcc/testsuite/g++.dg/reflect/parent_of1.C | 238 +\n gcc/testsuite/g++.dg/reflect/parm1.C | 56 +\n gcc/testsuite/g++.dg/reflect/parm2.C | 16 +\n gcc/testsuite/g++.dg/reflect/parm3.C | 33 +\n gcc/testsuite/g++.dg/reflect/parm4.C | 32 +\n gcc/testsuite/g++.dg/reflect/pr122634-1.C | 65 +\n gcc/testsuite/g++.dg/reflect/pr122634-2.C | 10 +\n gcc/testsuite/g++.dg/reflect/qrn1.C | 272 +\n gcc/testsuite/g++.dg/reflect/qrn2.C | 43 +\n gcc/testsuite/g++.dg/reflect/range_args.C | 96 +\n .../g++.dg/reflect/reflect_constant1.C | 25 +\n .../g++.dg/reflect/reflect_constant2.C | 31 +\n .../g++.dg/reflect/reflect_constant3.C | 67 +\n .../g++.dg/reflect/reflect_constant4.C | 15 +\n .../g++.dg/reflect/reflect_constant5.C | 30 +\n .../g++.dg/reflect/reflect_constant6.C | 46 +\n .../g++.dg/reflect/reflect_constant7.C | 18 +\n .../g++.dg/reflect/reflect_constant8.C | 33 +\n .../g++.dg/reflect/reflect_constant9.C | 33 +\n .../g++.dg/reflect/reflect_constant_array1.C | 110 +\n .../g++.dg/reflect/reflect_constant_array2.C | 17 +\n .../g++.dg/reflect/reflect_constant_array3.C | 18 +\n .../g++.dg/reflect/reflect_constant_array4.C | 20 +\n .../g++.dg/reflect/reflect_constant_string1.C | 133 +\n .../g++.dg/reflect/reflect_constant_string2.C | 14 +\n .../g++.dg/reflect/reflect_function1.C | 17 +\n .../g++.dg/reflect/reflect_function2.C | 74 +\n .../g++.dg/reflect/reflect_object1.C | 86 +\n .../g++.dg/reflect/reflect_object2.C | 115 +\n .../g++.dg/reflect/reflect_object3.C | 61 +\n .../g++.dg/reflect/reflect_object4.C | 10 +\n .../g++.dg/reflect/return_type_of1.C | 99 +\n gcc/testsuite/g++.dg/reflect/serialize1.C | 151 +\n gcc/testsuite/g++.dg/reflect/serialize2.C | 67 +\n gcc/testsuite/g++.dg/reflect/size_of1.C | 122 +\n .../g++.dg/reflect/source_location_of1.C | 113 +\n .../g++.dg/reflect/source_location_of2.C | 44 +\n gcc/testsuite/g++.dg/reflect/splice1.C | 28 +\n gcc/testsuite/g++.dg/reflect/splice2.C | 13 +\n gcc/testsuite/g++.dg/reflect/splice3.C | 5 +\n gcc/testsuite/g++.dg/reflect/splice4.C | 17 +\n gcc/testsuite/g++.dg/reflect/splice5.C | 39 +\n gcc/testsuite/g++.dg/reflect/splice6.C | 48 +\n gcc/testsuite/g++.dg/reflect/splice7.C | 6 +\n gcc/testsuite/g++.dg/reflect/splicing-base1.C | 24 +\n gcc/testsuite/g++.dg/reflect/splicing-base2.C | 30 +\n gcc/testsuite/g++.dg/reflect/splicing-base3.C | 112 +\n gcc/testsuite/g++.dg/reflect/splicing-base4.C | 28 +\n .../g++.dg/reflect/storage_duration1.C | 141 +\n .../g++.dg/reflect/storage_duration2.C | 218 +\n .../g++.dg/reflect/storage_duration3.C | 19 +\n gcc/testsuite/g++.dg/reflect/subobjects_of1.C | 214 +\n gcc/testsuite/g++.dg/reflect/substitute1.C | 238 +\n gcc/testsuite/g++.dg/reflect/substitute2.C | 30 +\n gcc/testsuite/g++.dg/reflect/symbol_of1.C | 61 +\n gcc/testsuite/g++.dg/reflect/symbol_of2.C | 6 +\n .../g++.dg/reflect/template_arguments_of1.C | 36 +\n .../g++.dg/reflect/template_arguments_of2.C | 107 +\n .../g++.dg/reflect/template_arguments_of3.C | 18 +\n gcc/testsuite/g++.dg/reflect/template_of1.C | 119 +\n gcc/testsuite/g++.dg/reflect/template_of2.C | 32 +\n gcc/testsuite/g++.dg/reflect/template_of3.C | 22 +\n gcc/testsuite/g++.dg/reflect/tuple1.C | 86 +\n gcc/testsuite/g++.dg/reflect/tuple2.C | 21 +\n gcc/testsuite/g++.dg/reflect/type1.C | 190 +\n gcc/testsuite/g++.dg/reflect/type10.C | 31 +\n gcc/testsuite/g++.dg/reflect/type2.C | 58 +\n gcc/testsuite/g++.dg/reflect/type3.C | 37 +\n gcc/testsuite/g++.dg/reflect/type4.C | 136 +\n gcc/testsuite/g++.dg/reflect/type5.C | 10 +\n gcc/testsuite/g++.dg/reflect/type6.C | 25 +\n gcc/testsuite/g++.dg/reflect/type7.C | 15 +\n gcc/testsuite/g++.dg/reflect/type8.C | 76 +\n gcc/testsuite/g++.dg/reflect/type9.C | 49 +\n gcc/testsuite/g++.dg/reflect/type_of1.C | 190 +\n gcc/testsuite/g++.dg/reflect/type_of2.C | 31 +\n gcc/testsuite/g++.dg/reflect/type_rels1.C | 141 +\n gcc/testsuite/g++.dg/reflect/type_trait1.C | 654 ++\n gcc/testsuite/g++.dg/reflect/type_trait10.C | 116 +\n gcc/testsuite/g++.dg/reflect/type_trait11.C | 447 +\n gcc/testsuite/g++.dg/reflect/type_trait12.C | 137 +\n gcc/testsuite/g++.dg/reflect/type_trait13.C | 425 +\n gcc/testsuite/g++.dg/reflect/type_trait2.C | 92 +\n gcc/testsuite/g++.dg/reflect/type_trait3.C | 218 +\n gcc/testsuite/g++.dg/reflect/type_trait4.C | 12 +\n gcc/testsuite/g++.dg/reflect/type_trait5.C | 453 +\n gcc/testsuite/g++.dg/reflect/type_trait6.C | 1381 +++\n gcc/testsuite/g++.dg/reflect/type_trait8.C | 129 +\n gcc/testsuite/g++.dg/reflect/type_trait9.C | 67 +\n .../g++.dg/reflect/u8display_string_of1.C | 230 +\n .../g++.dg/reflect/u8identifier_of1.C | 168 +\n gcc/testsuite/g++.dg/reflect/u8symbol_of1.C | 61 +\n .../g++.dg/reflect/underlying_type1.C | 13 +\n gcc/testsuite/g++.dg/reflect/using1.C | 13 +\n .../g++.dg/reflect/value_or_object1.C | 50 +\n gcc/testsuite/g++.dg/reflect/variable_of1.C | 136 +\n gcc/testsuite/g++.dg/reflect/variable_of2.C | 21 +\n gcc/testsuite/g++.dg/reflect/variable_of3.C | 28 +\n gcc/testsuite/g++.dg/reflect/variant1.C | 37 +\n gcc/testsuite/g++.dg/reflect/variant2.C | 19 +\n gcc/testsuite/g++.dg/reflect/vector1.C | 28 +\n gcc/testsuite/g++.dg/reflect/visibility1.C | 121 +\n gcc/tree-core.h | 3 +-\n gcc/tree.h | 15 +-\n libcc1/libcp1plugin.cc | 3 +-\n libcpp/charset.cc | 108 +\n libcpp/include/cpplib.h | 6 +\n libcpp/internal.h | 8 +\n libcpp/lex.cc | 33 +-\n libstdc++-v3/include/Makefile.am | 1 +\n libstdc++-v3/include/Makefile.in | 1 +\n libstdc++-v3/include/bits/iterator_concepts.h | 2 +-\n libstdc++-v3/include/bits/version.def | 9 +\n libstdc++-v3/include/bits/version.h | 10 +\n libstdc++-v3/include/precompiled/stdc++.h | 1 +\n libstdc++-v3/include/std/meta | 653 ++\n libstdc++-v3/include/std/type_traits | 60 +-\n libstdc++-v3/src/c++23/std.cc.in | 255 +\n .../requirements/explicit_instantiation.cc | 12 +\n .../requirements/typedefs.cc | 16 +\n .../20_util/is_consteval_only/value.cc | 30 +\n .../requirements/explicit_instantiation.cc | 12 +\n .../is_reflection/requirements/typedefs.cc | 16 +\n .../testsuite/20_util/is_reflection/value.cc | 20 +\n .../20_util/variable_templates_for_traits.cc | 10 +\n 506 files changed, 49138 insertions(+), 279 deletions(-)\n create mode 100644 gcc/cp/metafns.gperf\n create mode 100644 gcc/cp/metafns.h\n create mode 100644 gcc/cp/reflect.cc\n create mode 100644 gcc/testsuite/g++.dg/reflect/access_context1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/access_context2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/access_context3.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/adl1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/alignment_of1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/alignment_of2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/annotations1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/annotations2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/annotations3.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/annotations4.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/annotations5.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/annotations6.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/annotations7.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/anon1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/anon2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/anon3.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/bases_of1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/bases_of2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/bases_of3.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/bit_size_of1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/bitfield1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/can_substitute1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/class1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/class2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/common_reference1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/common_type1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/compare1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/compare10.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/compare2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/compare3.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/compare4.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/compare5.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/compare6.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/compare7.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/compare8.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/compare9.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/compat1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/complete1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/constant_of1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/constant_of2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/constant_of3.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/constant_of4.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/constant_of5.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/constant_of6.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/constant_of7.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/constant_of8.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/constant_of9.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/crash1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/crash10.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/crash11.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/crash12.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/crash13.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/crash14.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/crash15.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/crash16.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/crash17.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/crash18.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/crash2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/crash3.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/crash4.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/crash5.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/crash6.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/crash7.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/crash8.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/crash9.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/data_member_spec1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/data_member_spec2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/data_member_spec3.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/data_member_spec4.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/dealias1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/dealias2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/dealias3.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/define_aggregate1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/define_aggregate2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/define_aggregate3.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/define_aggregate4.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/define_aggregate5.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/define_static_array1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/define_static_array2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/define_static_array3.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/define_static_array4.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/define_static_object1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/define_static_object2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/define_static_string1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/dep1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/dep10.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/dep11.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/dep2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/dep3.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/dep4.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/dep5.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/dep6.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/dep7.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/dep8.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/dep9.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/diag1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/diag2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/diag3.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/diag4.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/display_string_of1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/eh1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/eh2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/eh3.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/eh4.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/eh5.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/eh6.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/eh7.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/eh8.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/eh9.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/enumerators_of1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/error1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/error10.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/error2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/error3.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/error4.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/error5.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/error6.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/error8.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/error9.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/expr1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/expr10.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/expr11.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/expr12.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/expr13.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/expr14.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/expr2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/expr3.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/expr4.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/expr5.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/expr6.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/expr7.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/expr8.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/expr9.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/extract1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/extract2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/extract3.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/extract4.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/extract5.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/extract6.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/extract7.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/extract8.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/extract9.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/feat1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/feat2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/has_c_language_linkage1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/has_default_argument1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/has_default_argument2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/has_default_member_initializer1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/has_ellipsis_parameter1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/has_external_linkage1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/has_external_linkage2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/has_identifier1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/has_identifier2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/has_internal_linkage1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/has_internal_linkage2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/has_linkage1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/has_module_linkage1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/has_module_linkage2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/has_parent1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/has_template_arguments1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/has_template_arguments2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/has_template_arguments3.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/has_template_arguments4.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/identifier_of1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/identifier_of2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/init1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/init10.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/init11.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/init12.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/init13.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/init14.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/init15.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/init16.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/init17.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/init2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/init3.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/init4.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/init5.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/init6.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/init7.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/init8.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/init9.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_accessible1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_accessible2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_alias_template1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_assignment1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_bit_field1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_class_member1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_class_template1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_complete_type1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_complete_type2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_concept1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_const1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_consteval_only1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_constructible_type1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_constructible_type2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_constructor_template1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_constuctor1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_conversion_function1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_conversion_function_template1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_copy_assignment1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_copy_constructor1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_data_member_spec1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_default_constructor1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_defaulted1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_defaulted2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_deleted1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_deleted2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_destructor1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_enumerable_type1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_enumerator1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_explicit1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_explicit2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_explicit_object_parameter1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_final1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_function1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_function2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_function3.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_function_parameter1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_function_parameter2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_function_template1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_function_template2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_function_type1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_literal_operator1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_literal_operator_template1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_lrvalue_reference_qualified1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_move_assignment1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_move_constructor1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_mutable_member1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_namespace1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_namespace_alias1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_namespace_member1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_noexcept1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_noexcept2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_noexcept3.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_noexcept4.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_nonstatic_data_member1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_object1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_object2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_operator_function1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_operator_function_template1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_override1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_pure_virtual1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_special_member_function1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_static_member1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_string_literal1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_structured_binding1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_structured_binding2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_template1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_template2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_type1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_type_alias1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_type_alias2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_type_alias3.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_user_declared1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_user_declared2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_user_provided1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_user_provided2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_variable1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_variable_template1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_virtual1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/is_volatile1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/lex1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/lex2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/mangle1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/member-visibility1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/member-visibility2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/member1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/member10.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/member11.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/member12.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/member13.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/member14.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/member15.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/member16.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/member17.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/member18.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/member19.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/member2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/member20.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/member3.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/member4.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/member5.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/member6.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/member7.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/member8.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/member9.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/members_of1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/members_of2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/members_of3.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/members_of4.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/members_of5.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/members_of6.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/members_of7.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/metafn-ptr1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/ns1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/ns2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/ns3.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/ns4.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/ns5.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/ns6.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/null1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/null2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/null3.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/null4.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/null5.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/object_of1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/object_of2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/odr1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/offset_of1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/operator_of1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/override1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/p2996-1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/p2996-10.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/p2996-11.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/p2996-12.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/p2996-13.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/p2996-14.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/p2996-15.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/p2996-16.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/p2996-17.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/p2996-18.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/p2996-19.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/p2996-2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/p2996-20.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/p2996-21.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/p2996-3.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/p2996-4.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/p2996-5.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/p2996-6.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/p2996-7.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/p2996-8.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/p2996-9.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/p3394-1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/p3491-1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/p3491-2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/p3491-3.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/pack-index1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/parameters_of1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/parameters_of2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/parameters_of3.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/parameters_of4.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/parameters_of5.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/parameters_of6.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/parent_of1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/parm1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/parm2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/parm3.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/parm4.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/pr122634-1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/pr122634-2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/qrn1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/qrn2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/range_args.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/reflect_constant1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/reflect_constant2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/reflect_constant3.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/reflect_constant4.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/reflect_constant5.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/reflect_constant6.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/reflect_constant7.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/reflect_constant8.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/reflect_constant9.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/reflect_constant_array1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/reflect_constant_array2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/reflect_constant_array3.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/reflect_constant_array4.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/reflect_constant_string1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/reflect_constant_string2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/reflect_function1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/reflect_function2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/reflect_object1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/reflect_object2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/reflect_object3.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/reflect_object4.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/return_type_of1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/serialize1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/serialize2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/size_of1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/source_location_of1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/source_location_of2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/splice1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/splice2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/splice3.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/splice4.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/splice5.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/splice6.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/splice7.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/splicing-base1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/splicing-base2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/splicing-base3.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/splicing-base4.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/storage_duration1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/storage_duration2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/storage_duration3.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/subobjects_of1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/substitute1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/substitute2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/symbol_of1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/symbol_of2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/template_arguments_of1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/template_arguments_of2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/template_arguments_of3.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/template_of1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/template_of2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/template_of3.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/tuple1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/tuple2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/type1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/type10.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/type2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/type3.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/type4.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/type5.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/type6.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/type7.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/type8.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/type9.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/type_of1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/type_of2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/type_rels1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/type_trait1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/type_trait10.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/type_trait11.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/type_trait12.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/type_trait13.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/type_trait2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/type_trait3.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/type_trait4.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/type_trait5.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/type_trait6.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/type_trait8.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/type_trait9.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/u8display_string_of1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/u8identifier_of1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/u8symbol_of1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/underlying_type1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/using1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/value_or_object1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/variable_of1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/variable_of2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/variable_of3.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/variant1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/variant2.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/vector1.C\n create mode 100644 gcc/testsuite/g++.dg/reflect/visibility1.C\n create mode 100644 libstdc++-v3/include/std/meta\n create mode 100644 libstdc++-v3/testsuite/20_util/is_consteval_only/requirements/explicit_instantiation.cc\n create mode 100644 libstdc++-v3/testsuite/20_util/is_consteval_only/requirements/typedefs.cc\n create mode 100644 libstdc++-v3/testsuite/20_util/is_consteval_only/value.cc\n create mode 100644 libstdc++-v3/testsuite/20_util/is_reflection/requirements/explicit_instantiation.cc\n create mode 100644 libstdc++-v3/testsuite/20_util/is_reflection/requirements/typedefs.cc\n create mode 100644 libstdc++-v3/testsuite/20_util/is_reflection/value.cc\n\nMarek" }