+2026-01-15 Marek Polacek <polacek@redhat.com>
+ Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/120775
+ PR c++/123081
+ PR c++/122634
+ * attribs.cc (attribute_value_equal): Return false if either attribute
+ is ATTR_UNIQUE_VALUE_P.
+ (merge_attributes): Handle lists with ATTR_UNIQUE_VALUE_P values.
+ * doc/invoke.texi: Document -freflection.
+ * dwarf2out.cc (is_base_type) <case default>: Check
+ TREE_CODE >= LAST_AND_UNUSED_TREE_CODE instead of is_cxx_auto.
+ (gen_type_die_with_usage): For TREE_CODE >= LAST_AND_UNUSED_TREE_CODE
+ trees use use DW_TAG_unspecified_type.
+ * tree-core.h (struct tree_base): Update a comment.
+ * tree.h (ATTR_UNIQUE_VALUE_P): Define.
+ (BINFO_BASE_ACCESSES): Update the comment.
+
+2026-01-15 Peter Damianov <peter0x44@disroot.org>
+
+ PR driver/123504
+ * config/i386/cygming.h (EXTRA_DEFAULT_COMPILERS): Comment out
+ .res spec to allow COFF files with .res extension to pass
+ through to the linker.
+ * config/aarch64/cygming.h (EXTRA_DEFAULT_COMPILERS): Likewise.
+
+2026-01-15 Stefan Schulze Frielinghaus <stefansf@gcc.gnu.org>
+
+ * ira-lives.cc (ira_implicitly_set_insn_hard_regs): Honor hard
+ register constraints.
+ * ira.cc (ira_setup_alts): Ditto.
+
+2026-01-15 Stefan Schulze Frielinghaus <stefansf@gcc.gnu.org>
+
+ * doc/extend.texi: Document current limitations of hard register
+ constraints.
+ * stmt.cc (parse_output_constraint): Reject multiple hard
+ register constraints or a combination of hard register
+ constraints and regular register constraints in one alternative.
+ (parse_input_constraint): Ditto.
+
+2026-01-15 Alfie Richards <alfie.richards@arm.com>
+
+ * config/aarch64/aarch64-simd.md: Add comment.
+ * config/aarch64/aarch64-sme.md: Likewise.
+ * config/aarch64/aarch64-sve-builtins-base.def: Likewise.
+ * config/aarch64/aarch64-sve-builtins-sme.def: Likewise.
+ * config/aarch64/aarch64-sve-builtins-sve2.def: Likewise.
+ * config/aarch64/aarch64-sve-builtins.def: Likewise.
+ * config/aarch64/aarch64-sve.md: Likewise.
+ * config/aarch64/aarch64-sve2.md: Likewise.
+ * config/aarch64/aarch64.md: Likewise.
+
+2026-01-15 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * config/sparc/sparc.h (TARGET_SUN_TLS): Remove.
+ * config/sparc/sol2.h (TARGET_SUN_TLS): Likewise.
+ * config/sparc/sparc.cc (TARGET_ASM_OUTPUT_DWARF_DTPREL): Guard
+ with HAVE_GNU_AS.
+ (sparc_tls_got): Guard with !HAVE_GNU_AS.
+ (sparc_legitimize_tls_address): Likewise.
+ * config/sparc/sparc.md ("tls_delay_slot"): Likewise.
+ ("@tie_add<P:mode>"): Likewise.
+
+2026-01-15 Jakub Jelinek <jakub@redhat.com>
+
+ PR debug/121045
+ * tree-pretty-print.h (dump_location): Add new dump_flags_t
+ argument defaulted to TDF_NONE.
+ * tree-pretty-print.cc (dump_location): Add flags argument. Don't
+ print discriminator if TDF_COMPARE_DEBUG bit is set in flags.
+ (dump_block_node, dump_generic_node): Pass through flags to
+ dump_location.
+ * gimple-pretty-print.cc (dump_gimple_phi, pp_gimple_stmt_1,
+ dump_implicit_edges): Likewise.
+ (gimple_dump_bb_as_sarif_properties): Pass dump_flags to
+ dump_location.
+ * print-rtl.cc (rtx_writer::print_rtx_operand_code_L): If dump_flags
+ has TDF_COMPARE_DEBUG bit set, don't print discriminators.
+
+2026-01-15 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * config/i386/sol2.h [!HAVE_GNU_AS] (ASM_CPU32_DEFAULT_SPEC): Use -m32.
+ (ASM_CPU64_DEFAULT_SPEC): Use -m64.
+
+2026-01-15 Josef Melcr <josef.melcr@suse.com>
+
+ PR ipa/122852
+ * cgraph.cc (cgraph_node::verify_node): Verify that callback
+ edges are unreachable when the carrying edge is unreachable.
+ * ipa-fnsummary.cc (redirect_to_unreachable): Redirect callback
+ edges to unreachable when redirecting the carrying edge.
+
+2026-01-15 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * configure.ac (gcc_cv_as_sparc_ua_pcrel): Remove.
+ (gcc_cv_as_sparc_ua_pcrel_hidden): Likewise.
+ * configure: Regenerate.
+ * config.in: Regenerate.
+ * config/sparc/sparc.h (ASM_PREFERRED_EH_DATA_FORMAT): Remove
+ !HAVE_AS_SPARC_UA_PCREL, !HAVE_AS_SPARC_UA_PCREL_HIDDEN support.
+ * config/sparc/sol2.h (ASM_PREFERRED_EH_DATA_FORMAT): Remove.
+ * config/sparc/sparc.cc (TARGET_ASM_OUTPUT_DWARF_DTPREL): Remove
+ HAVE_AS_SPARC_UA_PCREL guard.
+
+2026-01-15 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * config/sparc/sparc.h (TARGET_TLS): Define as HAVE_AS_TLS.
+ Update comment.
+ (TARGET_SUN_TLS): Define as 0.
+ (TARGET_GNU_TLS): Remove.
+ * config/sparc/freebsd.h (TARGET_SUN_TLS): Remove.
+ (TARGET_GNU_TLS): Remove.
+ * config/sparc/linux.h: Likewise.
+ * config/sparc/linux64.h: Likewise.
+ * config/sparc/sol2.h (TARGET_SUN_TLS): Redefine as 1.
+ Guard with HAVE_AS_TLS && !HAVE_GNU_AS.
+ (TARGET_GNU_TLS): Remove.
+ * config/sparc/sparc.cc (TARGET_ASM_OUTPUT_DWARF_DTPREL): Use
+ !TARGET_SUN_TLS in guard.
+ with !TARGET_SUN_TLS only.
+ * config/sparc/sparc.md ("tls_delay_slot"): Guard with
+ !TARGET_SUN_TLS.
+
+2026-01-15 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ PR target/38118
+ * config/sparc/sol2.h (ASM_OUTPUT_ALIGNED_COMMON): Remove.
+
+2026-01-15 Kugan Vivekanandarajah <kvivekananda@nvidia.com>
+
+ * cfgloopmanip.cc (duplicate_loop_body_to_header_edge): Assign
+ hierarchical discriminators for loop unrolling.
+ * cfgloopmanip.h (DLTHE_RECORD_HIERARCHICAL_DISCRIMINATOR): New flag.
+ * tree-ssa-loop-ivcanon.cc (try_unroll_loop_completely): Pass flag
+ to enable hierarchical discriminator assignment.
+ (try_peel_loop): Likewise.
+
+2026-01-15 Kugan Vivekanandarajah <kvivekananda@nvidia.com>
+
+ * gimple-loop-versioning.cc (loop_versioning::version_loop): Assign
+ copyid discriminators to distinguish different loop versions.
+
+2026-01-15 Kugan Vivekanandarajah <kvivekananda@nvidia.com>
+
+ * tree-vect-loop-manip.cc (vect_loop_versioning): Assign copyid
+ discriminators for vectorized and scalar loop versions.
+ * tree-vect-loop.cc (vect_transform_loop): Assign copyid
+ discriminators for vectorized and scalar loop versions.
+
+2026-01-15 Kugan Vivekanandarajah <kvivekananda@nvidia.com>
+
+ * Makefile.in: Add hierarchical_discriminator.o to OBJS.
+ * hierarchical_discriminator.cc: New file.
+ * hierarchical_discriminator.h: New file.
+ * function.h (copyid_alloc): New.
+ * input.cc (location_with_discriminator_components): New function.
+ (get_discriminator_components_from_loc): Likewise.
+ * input.h (DISCR_BASE_BITS): New constant.
+ (DISCR_MULTIPLICITY_BITS): Likewise.
+ (DISCR_COPYID_BITS): Likewise.
+ (DISCR_UNUSED_BITS): Likewise.
+ (DISCR_BASE_MASK): Likewise.
+ (DISCR_MULTIPLICITY_MASK): Likewise.
+ (DISCR_COPYID_MASK): Likewise.
+ (DISCR_BASE_SHIFT): Likewise.
+ (DISCR_MULTIPLICITY_SHIFT): Likewise.
+ (DISCR_COPYID_SHIFT): Likewise.
+ (DISCR_BASE_MAX): Likewise.
+ (DISCR_MULTIPLICITY_MAX): Likewise.
+ (DISCR_COPYID_MAX): Likewise.
+ (location_with_discriminator_components): New function declaration.
+ (get_discriminator_components_from_loc): Likewise.
+
+2026-01-15 DengJianbo <dengjianbo@loongson.cn>
+
+ * config/loongarch/loongarch.md: Remove condition in template
+ movdi_symbolic_off64.
+
2026-01-14 Peter Bergner <bergner@tenstorrent.com>
PR target/123092
+2026-01-15 Marek Polacek <polacek@redhat.com>
+ Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/120775
+ PR c++/123081
+ PR c++/122634
+ * Make-lang.in: Add cp/reflect.o. Add a rule for cp/metafns.h.
+ * config-lang.in: Add reflect.cc.
+ * constexpr.cc (constexpr_global_ctx): Add consteval_block and
+ metafns_called members. Initialize them.
+ (cxx_constexpr_quiet_p): New.
+ (cxx_constexpr_manifestly_const_eval): New.
+ (cxx_constexpr_caller): New.
+ (cxx_constexpr_consteval_block): New.
+ (enum value_cat): Move into cp-tree.h.
+ (cxx_eval_constant_expression): Move the declaration into cp-tree.h.
+ No longer static. Handle REFLECT_EXPR. Handle conversion of
+ a reflection to the meta::info type.
+ (cxx_eval_cxa_builtin_fn): Override current_function_decl.
+ (cxx_eval_builtin_function_call): Handle __builtin_is_string_literal.
+ (is_std_allocator): Also check __new_allocator.
+ (is_std_allocator_allocate): No longer static.
+ (cxa_allocate_and_throw_exception): New.
+ (cxx_eval_call_expression): Handle metafunctions. Maybe set
+ metafns_called.
+ (reduced_constant_expression_p): Handle REFLECT_EXPR.
+ (cxx_eval_binary_expression): Use compare_reflections for comparing
+ reflections.
+ (find_immediate_fndecl): Don't walk REFLECT_EXPR_P.
+ (cxx_eval_outermost_constant_expr): Set global_ctx.consteval_block.
+ Detect consteval-only smuggling.
+ (potential_constant_expression_1): Return true for REFLECT_EXPR
+ and SPLICE_EXPR.
+ * constraint.cc (diagnose_trait_expr): Add CPTK_IS_CONSTEVAL_ONLY case.
+ * cp-gimplify.cc (immediate_escalating_function_p): No longer static.
+ (promote_function_to_consteval): Likewise.
+ (cp_gimplify_expr) <case CALL_EXPR>: Detect any surviving consteval-only
+ expressions.
+ <case CP_BUILT_IN_IS_STRING_LITERAL>: Handle.
+ (wipe_consteval_only_r): New.
+ (cp_fold_immediate_r): Detect invalid uses of consteval-only types.
+ Clear consteval-only DECL_EXPRs.
+ (cp_genericize_r): Wipe consteval-only vars from BIND_EXPR_VARS and
+ BLOCK_VARS.
+ * cp-objcp-common.cc (cp_common_init_ts): Mark META_TYPE, SPLICE_SCOPE,
+ SPLICE_EXPR, and REFLECT_EXPR.
+ * cp-trait.def (IS_CONSTEVAL_ONLY): New trait.
+ * cp-tree.def (REFLECT_EXPR, META_TYPE, SPLICE_EXPR, SPLICE_SCOPE): New
+ trees.
+ * cp-tree.h (enum cp_tree_index): Add CPTI_ANNOTATION_IDENTIFIER,
+ CPTI_STD_META, and CPTI_META_INFO_TYPE.
+ (std_meta_node): Define.
+ (meta_info_type_node): Define.
+ (annotation_identifier): Define.
+ (REFLECTION_TYPE_P): Define.
+ (REFLECT_EXPR_P): Define.
+ (REFLECT_EXPR_HANDLE): Define.
+ (enum reflect_kind): New.
+ (REFLECT_EXPR_KIND): Define.
+ (SET_REFLECT_EXPR_KIND): Define.
+ (SPLICE_EXPR_EXPRESSION_P): Define.
+ (SET_SPLICE_EXPR_EXPRESSION_P): Define.
+ (SPLICE_EXPR_MEMBER_ACCESS_P): Define.
+ (SET_SPLICE_EXPR_MEMBER_ACCESS_P): Define.
+ (SPLICE_EXPR_ADDRESS_P): Define.
+ (SET_SPLICE_EXPR_ADDRESS_P): Define.
+ (SPLICE_SCOPE_EXPR): Define.
+ (SPLICE_SCOPE_TYPE_P): Define.
+ (WILDCARD_TYPE_P): Include SPLICE_SCOPE.
+ (COMPONENT_REF_SPLICE_P): Define.
+ (SCALAR_TYPE_P): Include REFLECTION_TYPE_P.
+ (ENUM_BEING_DEFINED_P): Define.
+ (OLD_PARM_DECL_P): Define.
+ (MULTIPLE_NAMES_PARM_P): Define.
+ (cp_preserve_using_decl): Declare.
+ (DEF_OPERATOR, DEF_ASSN_OPERATOR): Include META.
+ (struct ovl_op_info_t): Add meta_name member.
+ (enum cp_built_in_function): Add CP_BUILT_IN_IS_STRING_LITERAL.
+ (build_stub_type): Declare.
+ (current_function_decl_without_access_scope): Declare.
+ (dependent_namespace_p): Declare.
+ (convert_reflect_constant_arg): Declare.
+ (finish_base_specifier): Adjust declaration.
+ (parsing_lambda_declarator): Declare.
+ (fold_builtin_is_string_literal): Declare.
+ (annotation_p): Declare.
+ (finish_class_member_access_expr): Adjust declaration.
+ (immediate_escalating_function_p): Declare.
+ (promote_function_to_consteval): Declare.
+ (is_std_allocator_allocate): Declare.
+ (cxa_allocate_and_throw_exception): Declare.
+ (enum value_cat): Define.
+ (cxx_eval_constant_expression): Declare.
+ (cxx_constexpr_quiet_p): Declare.
+ (cxx_constexpr_manifestly_const_eval): Declare.
+ (cxx_constexpr_caller): Declare.
+ (cxx_constexpr_consteval_block): Declare.
+ (init_reflection): Declare.
+ (metafunction_p): Declare.
+ (direct_base_parent): Declare.
+ (process_metafunction): Declare.
+ (get_reflection): Declare.
+ (get_null_reflection): Declare.
+ (splice): Declare.
+ (check_out_of_consteval_use): Declare.
+ (consteval_only_p): Declare.
+ (compare_reflections): Declare.
+ (valid_splice_type_p): Declare.
+ (valid_splice_scope_p): Declare.
+ (check_splice_expr): Declare.
+ (make_splice_scope): Declare.
+ (dependent_splice_p): Declare.
+ (reflection_mangle_prefix): Declare.
+ (check_consteval_only_fn): Declare.
+ * cvt.cc (convert_to_void): Call check_out_of_consteval_use.
+ * cxx-pretty-print.cc (cxx_pretty_printer::unary_expression): New
+ REFLECT_EXPR case.
+ (cxx_pretty_printer::expression): Likewise.
+ (cxx_pretty_printer::simple_type_specifier): New META_TYPE case.
+ (cxx_pretty_printer::type_id): Likewise.
+ * decl.cc (duplicate_decls): Merge parameter names for Reflection.
+ Maybe set OLD_PARM_DECL_P.
+ (initialize_predefined_identifiers): Add "annotation ".
+ (cxx_init_decl_processing): Add __builtin_is_string_literal. Call
+ init_reflection.
+ (maybe_commonize_var): Do nothing for consteval_only_p.
+ (check_initializer): Default-initialize std::meta::info.
+ (make_rtl_for_nonlocal_decl): For consteval_only_p vars, set
+ DECL_EXTERNAL and return early.
+ (cp_finish_decl): Call check_out_of_consteval_use. Don't go
+ creating a varpool node for consteval_only_p.
+ (get_tuple_size): Check the instantiation instead of the type.
+ (grokfndecl): Call check_consteval_only_fn.
+ (xref_basetypes): Stitch annotations onto BINFO_BASE_ACCESSES.
+ (finish_enum_value_list): Clear ENUM_BEING_DEFINED_P.
+ * decl2.cc (is_late_template_attribute): Handle all annotations as
+ late.
+ (cp_check_const_attributes): Don't handle annotations here.
+ (maybe_make_one_only): Do nothing for consteval_only_p.
+ (mark_needed): Likewise.
+ (min_vis_expr_r): Handle reflections.
+ (prune_vars_needing_no_initialization): Skip consteval_only_p.
+ (no_linkage_error): Return early for metafunctions.
+ (c_parse_final_cleanups): Don't write out consteval_only_p vars. Avoid
+ complaining about metafunctions.
+ * error.cc (dump_type): New cases for CONST_DECL, META_TYPE, and
+ SPLICE_SCOPE.
+ (dump_type_prefix): New cases for META_TYPE and SPLICE_SCOPE.
+ (dump_type_suffix): Likewise.
+ (dump_decl): Dump SPLICE_EXPR.
+ (dump_expr): Dump REFLECT_EXPR and SPLICE_EXPR.
+ * init.cc (build_zero_init_1): Build a null reflection value.
+ (perform_member_init): Call check_out_of_consteval_use.
+ * lex.cc (DEF_OPERATOR, OPERATOR_TRANSITION): Update defines.
+ * mangle.cc (write_type): Mangle META_TYPE.
+ (write_expression): Handle REFLECT_EXPR.
+ (write_reflection): New.
+ (write_template_arg_literal): New REFLECT_EXPR case.
+ (write_template_arg): Handle REFLECT_EXPR.
+ * method.cc (build_stub_type): No longer static.
+ * module.cc (trees_out::type_node): Handle META_TYPE.
+ (trees_in::tree_node): Likewise.
+ * name-lookup.cc (name_lookup::adl_type): std::meta is an associated
+ namespace of std::meta::info.
+ (strip_using_decl): Don't strip when cp_preserve_using_decl.
+ (handle_namespace_attrs): Handle annotations.
+ (do_namespace_alias): Handle SPLICE_EXPR.
+ (lookup_qualified_name): When cp_preserve_using_decl, don't do
+ OVL_FUNCTION.
+ (finish_using_directive): Detect annotations on using directive.
+ * operators.def: Update for META_NAME.
+ * parser.cc: New cp_preserve_using_decl global.
+ (enum required_token): Add RT_CLOSE_SPLICE.
+ (get_required_cpp_ttype): Return CPP_CLOSE_SPLICE for RT_CLOSE_SPLICE.
+ (cp_parser_next_tokens_start_splice_type_spec_p): New.
+ (cp_parser_next_tokens_can_start_splice_scope_spec_p): New.
+ (cp_parser_splice_specifier): New.
+ (cp_parser_splice_type_specifier): New.
+ (cp_parser_splice_expression): New.
+ (cp_parser_splice_scope_specifier): New.
+ (cp_parser_splice_spec_is_nns_p): New.
+ (cp_parser_nth_token_starts_splice_without_nns_p): New.
+ (cp_parser_primary_expression): Handle CPP_OPEN_SPLICE. Give an
+ error for ^^ outside reflection.
+ (cp_parser_unqualified_id): Allow r.~typename [:R:].
+ (cp_parser_nested_name_specifier_opt): Cope with splice-scope-specifier.
+ (cp_parser_qualifying_entity): Parse splice-scope-specifier.
+ (cp_parser_postfix_expression): Deal with [: :] after a typename.
+ (cp_parser_postfix_dot_deref_expression): Parse & handle splices
+ in a class member access. Pass splice_p to
+ finish_class_member_access_expr.
+ (cp_parser_reflection_name): New.
+ (cp_parser_reflect_expression): New.
+ (cp_parser_unary_expression): Parse reflect-expression.
+ (cp_parser_declaration): Parse splice-scope-specifier.
+ (cp_parser_decomposition_declaration): Detect annotations on structured
+ bindings.
+ (cp_parser_decltype_expr): Parse splice-expression.
+ (cp_parser_template_id): New parsed_templ argument. If it's nonnull,
+ don't parse the template name. Turn an assert into a condition.
+ (cp_parser_type_specifier): Handle typename [: :].
+ (cp_parser_simple_type_specifier): Parse splice-type-specifier.
+ (cp_parser_enum_specifier): Set ENUM_BEING_DEFINED_P.
+ (cp_parser_namespace_alias_definition): Parse splice-specifier.
+ (cp_parser_using_directive): Likewise.
+ (cp_parser_type_id_1): New bool * parameter to distinguish between
+ types and type aliases. Set it.
+ (cp_parser_type_id): Adjust the call to cp_parser_type_id_1.
+ (cp_parser_template_type_arg): Likewise.
+ (cp_parser_trailing_type_id): Likewise.
+ (cp_parser_base_specifier): Handle annotations. Maybe give an error
+ for splice-scope-specifier. Parse splice-type-specifier. Pass
+ annotations to finish_base_specifier.
+ (cp_parser_annotation): New.
+ (cp_parser_std_attribute_list): Detect mixing annotations and attributes
+ in the same list.
+ (cp_parser_annotation_list): New.
+ (cp_parser_std_attribute_spec): Parse annotations.
+ (cp_parser_skip_balanced_tokens): Also handle CPP_OPEN_SPLICE
+ and CPP_CLOSE_SPLICE.
+ (cp_parser_type_requirement): Parse splice-type-specifier.
+ (cp_parser_lookup_name): Also consider dependent namespaces. Don't
+ call check_accessibility_of_qualified_id for USING_DECLs.
+ (cp_parser_required_error): Handle RT_CLOSE_SPLICE.
+ * pt.cc (current_function_decl_without_access_scope): New.
+ (verify_unstripped_args_1): REFLECT_EXPR_P is OK.
+ (iterative_hash_template_arg): Handle REFLECT_EXPR.
+ (convert_nontype_argument): Maybe give an error for REFLECTION_TYPE_P.
+ (for_each_template_parm_r): Handle SPLICE_SCOPE.
+ (instantiate_class_template): Handle annotations.
+ (tsubst_pack_index): Make static.
+ (tsubst_decl): Handle NAMESPACE_DECL.
+ (tsubst_splice_scope): New.
+ (tsubst_splice_expr): New.
+ (tsubst): Don't return early for NAMESPACE_DECL. New META_TYPE case.
+ Handle a splice-specifier that expanded into a NAMESPACE_DECL. Handle
+ SPLICE_SCOPE, SPLICE_EXPR, and TEMPLATE_ID_EXPR.
+ (tsubst_scope): Also accept NAMESPACE_DECL.
+ (tsubst_qualified_id): Check dependent_namespace_p.
+ (tsubst_lambda_expr): Set LAMBDA_EXPR_CONSTEVAL_BLOCK_P.
+ (tsubst_expr): Allow dependent_splice_p in an assert. Check
+ COMPONENT_REF_SPLICE_P and pass it to finish_class_member_access_expr.
+ <case NAMESPACE_DECL>: Remove.
+ New REFLECT_EXPR and SPLICE_EXPR cases.
+ (unify): Handle META_TYPE.
+ (instantiate_body): Call check_consteval_only_fn.
+ (tsubst_enum): Set ENUM_BEING_DEFINED_P.
+ (dependent_type_p_r): A splice-scope-specifier is dependent.
+ (dependent_namespace_p): New.
+ (value_dependent_expression_p): Handle REFLECT_EXPR. Also handle
+ [meta.reflection.access.context]/8.
+ (type_dependent_expression_p): REFLECT_EXPR_P is not type-dependent.
+ (convert_reflect_constant_arg): New.
+ * search.cc (check_final_overrider): Adjust for CWG 3117.
+ * semantics.cc (finish_base_specifier): Handle annotations.
+ (parsing_lambda_declarator): No longer static.
+ (finish_id_expression_1): Check dependent_namespace_p.
+ (fold_builtin_is_string_literal): New.
+ (trait_expr_value): Handle CPTK_IS_CONSTEVAL_ONLY.
+ (finish_trait_expr): Likewise.
+ * tree.cc (handle_annotation_attribute): New.
+ (builtin_valid_in_constant_expr_p): Return true for
+ CP_BUILT_IN_IS_STRING_LITERAL.
+ (cp_tree_equal): Handle comparing REFLECT_EXPRs.
+ (internal_attributes): Add "annotation ".
+ (annotation_p): New.
+ * typeck.cc (finish_class_member_access_expr): New splice_p argument.
+ Handle dependent splices. Implement splicing a base class subobject.
+ Handle class member access using a splice-expression.
+ (cp_build_binary_op): Handle comparing std::meta::infos.
+ (check_return_expr): Call check_out_of_consteval_use.
+ * metafns.gperf: New file.
+ * metafns.h: New file.
+ * reflect.cc: New file.
+
2026-01-14 David Malcolm <dmalcolm@redhat.com>
* call.cc (get_fndecl_argument_location): Use DECL_SOURCE_LOCATION
+2026-01-15 Pengxuan Zheng <pengxuan.zheng@oss.qualcomm.com>
+
+ * gcc.dg/pr123109.c: Require target x86_64 and aarch64.
+
+2026-01-15 Jeff Law <jeffrey.law@oss.qualcomm.com>
+
+ * gcc.target/riscv/rvv/autovec/pr122445.c: Adjust expected output.
+
+2026-01-15 Marek Polacek <polacek@redhat.com>
+ Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/120775
+ PR c++/123081
+ PR c++/122634
+ * g++.dg/DRs/dr2581-1.C: Add -freflection.
+ * g++.dg/DRs/dr2581-2.C: Likewise.
+ * g++.dg/reflect/access_context1.C: New test.
+ * g++.dg/reflect/access_context2.C: New test.
+ * g++.dg/reflect/access_context3.C: New test.
+ * g++.dg/reflect/adl1.C: New test.
+ * g++.dg/reflect/alignment_of1.C: New test.
+ * g++.dg/reflect/alignment_of2.C: New test.
+ * g++.dg/reflect/annotations1.C: New test.
+ * g++.dg/reflect/annotations2.C: New test.
+ * g++.dg/reflect/annotations3.C: New test.
+ * g++.dg/reflect/annotations4.C: New test.
+ * g++.dg/reflect/annotations5.C: New test.
+ * g++.dg/reflect/annotations6.C: New test.
+ * g++.dg/reflect/annotations7.C: New test.
+ * g++.dg/reflect/annotations8.C: New test.
+ * g++.dg/reflect/anon1.C: New test.
+ * g++.dg/reflect/anon2.C: New test.
+ * g++.dg/reflect/anon3.C: New test.
+ * g++.dg/reflect/bases_of1.C: New test.
+ * g++.dg/reflect/bases_of2.C: New test.
+ * g++.dg/reflect/bases_of3.C: New test.
+ * g++.dg/reflect/bit_size_of1.C: New test.
+ * g++.dg/reflect/bitfield1.C: New test.
+ * g++.dg/reflect/can_substitute1.C: New test.
+ * g++.dg/reflect/class1.C: New test.
+ * g++.dg/reflect/class2.C: New test.
+ * g++.dg/reflect/common_reference1.C: New test.
+ * g++.dg/reflect/common_type1.C: New test.
+ * g++.dg/reflect/compare1.C: New test.
+ * g++.dg/reflect/compare10.C: New test.
+ * g++.dg/reflect/compare2.C: New test.
+ * g++.dg/reflect/compare3.C: New test.
+ * g++.dg/reflect/compare4.C: New test.
+ * g++.dg/reflect/compare5.C: New test.
+ * g++.dg/reflect/compare6.C: New test.
+ * g++.dg/reflect/compare7.C: New test.
+ * g++.dg/reflect/compare8.C: New test.
+ * g++.dg/reflect/compare9.C: New test.
+ * g++.dg/reflect/compat1.C: New test.
+ * g++.dg/reflect/complete1.C: New test.
+ * g++.dg/reflect/constant_of1.C: New test.
+ * g++.dg/reflect/constant_of2.C: New test.
+ * g++.dg/reflect/constant_of3.C: New test.
+ * g++.dg/reflect/constant_of4.C: New test.
+ * g++.dg/reflect/constant_of5.C: New test.
+ * g++.dg/reflect/constant_of6.C: New test.
+ * g++.dg/reflect/constant_of7.C: New test.
+ * g++.dg/reflect/constant_of8.C: New test.
+ * g++.dg/reflect/constant_of9.C: New test.
+ * g++.dg/reflect/crash1.C: New test.
+ * g++.dg/reflect/crash10.C: New test.
+ * g++.dg/reflect/crash11.C: New test.
+ * g++.dg/reflect/crash12.C: New test.
+ * g++.dg/reflect/crash13.C: New test.
+ * g++.dg/reflect/crash14.C: New test.
+ * g++.dg/reflect/crash15.C: New test.
+ * g++.dg/reflect/crash16.C: New test.
+ * g++.dg/reflect/crash17.C: New test.
+ * g++.dg/reflect/crash18.C: New test.
+ * g++.dg/reflect/crash2.C: New test.
+ * g++.dg/reflect/crash3.C: New test.
+ * g++.dg/reflect/crash4.C: New test.
+ * g++.dg/reflect/crash5.C: New test.
+ * g++.dg/reflect/crash6.C: New test.
+ * g++.dg/reflect/crash7.C: New test.
+ * g++.dg/reflect/crash8.C: New test.
+ * g++.dg/reflect/crash9.C: New test.
+ * g++.dg/reflect/data_member_spec1.C: New test.
+ * g++.dg/reflect/data_member_spec2.C: New test.
+ * g++.dg/reflect/data_member_spec3.C: New test.
+ * g++.dg/reflect/data_member_spec4.C: New test.
+ * g++.dg/reflect/dealias1.C: New test.
+ * g++.dg/reflect/dealias2.C: New test.
+ * g++.dg/reflect/dealias3.C: New test.
+ * g++.dg/reflect/define_aggregate1.C: New test.
+ * g++.dg/reflect/define_aggregate2.C: New test.
+ * g++.dg/reflect/define_aggregate3.C: New test.
+ * g++.dg/reflect/define_aggregate4.C: New test.
+ * g++.dg/reflect/define_aggregate5.C: New test.
+ * g++.dg/reflect/define_static_array1.C: New test.
+ * g++.dg/reflect/define_static_array2.C: New test.
+ * g++.dg/reflect/define_static_array3.C: New test.
+ * g++.dg/reflect/define_static_array4.C: New test.
+ * g++.dg/reflect/define_static_object1.C: New test.
+ * g++.dg/reflect/define_static_object2.C: New test.
+ * g++.dg/reflect/define_static_string1.C: New test.
+ * g++.dg/reflect/dep1.C: New test.
+ * g++.dg/reflect/dep10.C: New test.
+ * g++.dg/reflect/dep11.C: New test.
+ * g++.dg/reflect/dep2.C: New test.
+ * g++.dg/reflect/dep3.C: New test.
+ * g++.dg/reflect/dep4.C: New test.
+ * g++.dg/reflect/dep5.C: New test.
+ * g++.dg/reflect/dep6.C: New test.
+ * g++.dg/reflect/dep7.C: New test.
+ * g++.dg/reflect/dep8.C: New test.
+ * g++.dg/reflect/dep9.C: New test.
+ * g++.dg/reflect/diag1.C: New test.
+ * g++.dg/reflect/diag2.C: New test.
+ * g++.dg/reflect/diag3.C: New test.
+ * g++.dg/reflect/diag4.C: New test.
+ * g++.dg/reflect/display_string_of1.C: New test.
+ * g++.dg/reflect/eh1.C: New test.
+ * g++.dg/reflect/eh2.C: New test.
+ * g++.dg/reflect/eh3.C: New test.
+ * g++.dg/reflect/eh4.C: New test.
+ * g++.dg/reflect/eh5.C: New test.
+ * g++.dg/reflect/eh6.C: New test.
+ * g++.dg/reflect/eh7.C: New test.
+ * g++.dg/reflect/eh8.C: New test.
+ * g++.dg/reflect/eh9.C: New test.
+ * g++.dg/reflect/enumerators_of1.C: New test.
+ * g++.dg/reflect/error1.C: New test.
+ * g++.dg/reflect/error10.C: New test.
+ * g++.dg/reflect/error2.C: New test.
+ * g++.dg/reflect/error3.C: New test.
+ * g++.dg/reflect/error4.C: New test.
+ * g++.dg/reflect/error5.C: New test.
+ * g++.dg/reflect/error6.C: New test.
+ * g++.dg/reflect/error8.C: New test.
+ * g++.dg/reflect/error9.C: New test.
+ * g++.dg/reflect/expr1.C: New test.
+ * g++.dg/reflect/expr10.C: New test.
+ * g++.dg/reflect/expr11.C: New test.
+ * g++.dg/reflect/expr12.C: New test.
+ * g++.dg/reflect/expr13.C: New test.
+ * g++.dg/reflect/expr14.C: New test.
+ * g++.dg/reflect/expr2.C: New test.
+ * g++.dg/reflect/expr3.C: New test.
+ * g++.dg/reflect/expr4.C: New test.
+ * g++.dg/reflect/expr5.C: New test.
+ * g++.dg/reflect/expr6.C: New test.
+ * g++.dg/reflect/expr7.C: New test.
+ * g++.dg/reflect/expr8.C: New test.
+ * g++.dg/reflect/expr9.C: New test.
+ * g++.dg/reflect/extract1.C: New test.
+ * g++.dg/reflect/extract2.C: New test.
+ * g++.dg/reflect/extract3.C: New test.
+ * g++.dg/reflect/extract4.C: New test.
+ * g++.dg/reflect/extract5.C: New test.
+ * g++.dg/reflect/extract6.C: New test.
+ * g++.dg/reflect/extract7.C: New test.
+ * g++.dg/reflect/extract8.C: New test.
+ * g++.dg/reflect/extract9.C: New test.
+ * g++.dg/reflect/feat1.C: New test.
+ * g++.dg/reflect/feat2.C: New test.
+ * g++.dg/reflect/has_c_language_linkage1.C: New test.
+ * g++.dg/reflect/has_default_argument1.C: New test.
+ * g++.dg/reflect/has_default_argument2.C: New test.
+ * g++.dg/reflect/has_default_member_initializer1.C: New test.
+ * g++.dg/reflect/has_ellipsis_parameter1.C: New test.
+ * g++.dg/reflect/has_external_linkage1.C: New test.
+ * g++.dg/reflect/has_external_linkage2.C: New test.
+ * g++.dg/reflect/has_identifier1.C: New test.
+ * g++.dg/reflect/has_identifier2.C: New test.
+ * g++.dg/reflect/has_internal_linkage1.C: New test.
+ * g++.dg/reflect/has_internal_linkage2.C: New test.
+ * g++.dg/reflect/has_linkage1.C: New test.
+ * g++.dg/reflect/has_module_linkage1.C: New test.
+ * g++.dg/reflect/has_module_linkage2.C: New test.
+ * g++.dg/reflect/has_parent1.C: New test.
+ * g++.dg/reflect/has_template_arguments1.C: New test.
+ * g++.dg/reflect/has_template_arguments2.C: New test.
+ * g++.dg/reflect/has_template_arguments3.C: New test.
+ * g++.dg/reflect/has_template_arguments4.C: New test.
+ * g++.dg/reflect/identifier_of1.C: New test.
+ * g++.dg/reflect/identifier_of2.C: New test.
+ * g++.dg/reflect/init1.C: New test.
+ * g++.dg/reflect/init10.C: New test.
+ * g++.dg/reflect/init11.C: New test.
+ * g++.dg/reflect/init12.C: New test.
+ * g++.dg/reflect/init13.C: New test.
+ * g++.dg/reflect/init14.C: New test.
+ * g++.dg/reflect/init15.C: New test.
+ * g++.dg/reflect/init16.C: New test.
+ * g++.dg/reflect/init17.C: New test.
+ * g++.dg/reflect/init2.C: New test.
+ * g++.dg/reflect/init3.C: New test.
+ * g++.dg/reflect/init4.C: New test.
+ * g++.dg/reflect/init5.C: New test.
+ * g++.dg/reflect/init6.C: New test.
+ * g++.dg/reflect/init7.C: New test.
+ * g++.dg/reflect/init8.C: New test.
+ * g++.dg/reflect/init9.C: New test.
+ * g++.dg/reflect/is_accessible1.C: New test.
+ * g++.dg/reflect/is_accessible2.C: New test.
+ * g++.dg/reflect/is_alias_template1.C: New test.
+ * g++.dg/reflect/is_assignment1.C: New test.
+ * g++.dg/reflect/is_bit_field1.C: New test.
+ * g++.dg/reflect/is_class_member1.C: New test.
+ * g++.dg/reflect/is_class_template1.C: New test.
+ * g++.dg/reflect/is_complete_type1.C: New test.
+ * g++.dg/reflect/is_complete_type2.C: New test.
+ * g++.dg/reflect/is_concept1.C: New test.
+ * g++.dg/reflect/is_const1.C: New test.
+ * g++.dg/reflect/is_consteval_only1.C: New test.
+ * g++.dg/reflect/is_constructible_type1.C: New test.
+ * g++.dg/reflect/is_constructible_type2.C: New test.
+ * g++.dg/reflect/is_constructor_template1.C: New test.
+ * g++.dg/reflect/is_constuctor1.C: New test.
+ * g++.dg/reflect/is_conversion_function1.C: New test.
+ * g++.dg/reflect/is_conversion_function_template1.C: New test.
+ * g++.dg/reflect/is_copy_assignment1.C: New test.
+ * g++.dg/reflect/is_copy_constructor1.C: New test.
+ * g++.dg/reflect/is_data_member_spec1.C: New test.
+ * g++.dg/reflect/is_default_constructor1.C: New test.
+ * g++.dg/reflect/is_defaulted1.C: New test.
+ * g++.dg/reflect/is_defaulted2.C: New test.
+ * g++.dg/reflect/is_deleted1.C: New test.
+ * g++.dg/reflect/is_deleted2.C: New test.
+ * g++.dg/reflect/is_destructor1.C: New test.
+ * g++.dg/reflect/is_enumerable_type1.C: New test.
+ * g++.dg/reflect/is_enumerator1.C: New test.
+ * g++.dg/reflect/is_explicit1.C: New test.
+ * g++.dg/reflect/is_explicit2.C: New test.
+ * g++.dg/reflect/is_explicit_object_parameter1.C: New test.
+ * g++.dg/reflect/is_final1.C: New test.
+ * g++.dg/reflect/is_function1.C: New test.
+ * g++.dg/reflect/is_function2.C: New test.
+ * g++.dg/reflect/is_function3.C: New test.
+ * g++.dg/reflect/is_function_parameter1.C: New test.
+ * g++.dg/reflect/is_function_parameter2.C: New test.
+ * g++.dg/reflect/is_function_template1.C: New test.
+ * g++.dg/reflect/is_function_template2.C: New test.
+ * g++.dg/reflect/is_function_type1.C: New test.
+ * g++.dg/reflect/is_literal_operator1.C: New test.
+ * g++.dg/reflect/is_literal_operator_template1.C: New test.
+ * g++.dg/reflect/is_lrvalue_reference_qualified1.C: New test.
+ * g++.dg/reflect/is_move_assignment1.C: New test.
+ * g++.dg/reflect/is_move_constructor1.C: New test.
+ * g++.dg/reflect/is_mutable_member1.C: New test.
+ * g++.dg/reflect/is_namespace1.C: New test.
+ * g++.dg/reflect/is_namespace_alias1.C: New test.
+ * g++.dg/reflect/is_namespace_member1.C: New test.
+ * g++.dg/reflect/is_noexcept1.C: New test.
+ * g++.dg/reflect/is_noexcept2.C: New test.
+ * g++.dg/reflect/is_noexcept3.C: New test.
+ * g++.dg/reflect/is_noexcept4.C: New test.
+ * g++.dg/reflect/is_nonstatic_data_member1.C: New test.
+ * g++.dg/reflect/is_object1.C: New test.
+ * g++.dg/reflect/is_object2.C: New test.
+ * g++.dg/reflect/is_operator_function1.C: New test.
+ * g++.dg/reflect/is_operator_function_template1.C: New test.
+ * g++.dg/reflect/is_override1.C: New test.
+ * g++.dg/reflect/is_pure_virtual1.C: New test.
+ * g++.dg/reflect/is_special_member_function1.C: New test.
+ * g++.dg/reflect/is_static_member1.C: New test.
+ * g++.dg/reflect/is_string_literal1.C: New test.
+ * g++.dg/reflect/is_structured_binding1.C: New test.
+ * g++.dg/reflect/is_structured_binding2.C: New test.
+ * g++.dg/reflect/is_template1.C: New test.
+ * g++.dg/reflect/is_template2.C: New test.
+ * g++.dg/reflect/is_type1.C: New test.
+ * g++.dg/reflect/is_type_alias1.C: New test.
+ * g++.dg/reflect/is_type_alias2.C: New test.
+ * g++.dg/reflect/is_type_alias3.C: New test.
+ * g++.dg/reflect/is_user_declared1.C: New test.
+ * g++.dg/reflect/is_user_declared2.C: New test.
+ * g++.dg/reflect/is_user_provided1.C: New test.
+ * g++.dg/reflect/is_user_provided2.C: New test.
+ * g++.dg/reflect/is_variable1.C: New test.
+ * g++.dg/reflect/is_variable_template1.C: New test.
+ * g++.dg/reflect/is_virtual1.C: New test.
+ * g++.dg/reflect/is_volatile1.C: New test.
+ * g++.dg/reflect/lex1.C: New test.
+ * g++.dg/reflect/lex2.C: New test.
+ * g++.dg/reflect/mangle1.C: New test.
+ * g++.dg/reflect/member-visibility1.C: New test.
+ * g++.dg/reflect/member-visibility2.C: New test.
+ * g++.dg/reflect/member1.C: New test.
+ * g++.dg/reflect/member10.C: New test.
+ * g++.dg/reflect/member11.C: New test.
+ * g++.dg/reflect/member12.C: New test.
+ * g++.dg/reflect/member13.C: New test.
+ * g++.dg/reflect/member14.C: New test.
+ * g++.dg/reflect/member15.C: New test.
+ * g++.dg/reflect/member16.C: New test.
+ * g++.dg/reflect/member17.C: New test.
+ * g++.dg/reflect/member18.C: New test.
+ * g++.dg/reflect/member19.C: New test.
+ * g++.dg/reflect/member2.C: New test.
+ * g++.dg/reflect/member20.C: New test.
+ * g++.dg/reflect/member3.C: New test.
+ * g++.dg/reflect/member4.C: New test.
+ * g++.dg/reflect/member5.C: New test.
+ * g++.dg/reflect/member6.C: New test.
+ * g++.dg/reflect/member7.C: New test.
+ * g++.dg/reflect/member8.C: New test.
+ * g++.dg/reflect/member9.C: New test.
+ * g++.dg/reflect/members_of1.C: New test.
+ * g++.dg/reflect/members_of2.C: New test.
+ * g++.dg/reflect/members_of3.C: New test.
+ * g++.dg/reflect/members_of4.C: New test.
+ * g++.dg/reflect/members_of5.C: New test.
+ * g++.dg/reflect/members_of6.C: New test.
+ * g++.dg/reflect/members_of7.C: New test.
+ * g++.dg/reflect/metafn-ptr1.C: New test.
+ * g++.dg/reflect/ns1.C: New test.
+ * g++.dg/reflect/ns2.C: New test.
+ * g++.dg/reflect/ns3.C: New test.
+ * g++.dg/reflect/ns4.C: New test.
+ * g++.dg/reflect/ns5.C: New test.
+ * g++.dg/reflect/ns6.C: New test.
+ * g++.dg/reflect/null1.C: New test.
+ * g++.dg/reflect/null2.C: New test.
+ * g++.dg/reflect/null3.C: New test.
+ * g++.dg/reflect/null4.C: New test.
+ * g++.dg/reflect/null5.C: New test.
+ * g++.dg/reflect/object_of1.C: New test.
+ * g++.dg/reflect/object_of2.C: New test.
+ * g++.dg/reflect/odr1.C: New test.
+ * g++.dg/reflect/offset_of1.C: New test.
+ * g++.dg/reflect/operator_of1.C: New test.
+ * g++.dg/reflect/override1.C: New test.
+ * g++.dg/reflect/p2996-1.C: New test.
+ * g++.dg/reflect/p2996-10.C: New test.
+ * g++.dg/reflect/p2996-11.C: New test.
+ * g++.dg/reflect/p2996-12.C: New test.
+ * g++.dg/reflect/p2996-13.C: New test.
+ * g++.dg/reflect/p2996-14.C: New test.
+ * g++.dg/reflect/p2996-15.C: New test.
+ * g++.dg/reflect/p2996-16.C: New test.
+ * g++.dg/reflect/p2996-17.C: New test.
+ * g++.dg/reflect/p2996-18.C: New test.
+ * g++.dg/reflect/p2996-19.C: New test.
+ * g++.dg/reflect/p2996-2.C: New test.
+ * g++.dg/reflect/p2996-20.C: New test.
+ * g++.dg/reflect/p2996-21.C: New test.
+ * g++.dg/reflect/p2996-3.C: New test.
+ * g++.dg/reflect/p2996-4.C: New test.
+ * g++.dg/reflect/p2996-5.C: New test.
+ * g++.dg/reflect/p2996-6.C: New test.
+ * g++.dg/reflect/p2996-7.C: New test.
+ * g++.dg/reflect/p2996-8.C: New test.
+ * g++.dg/reflect/p2996-9.C: New test.
+ * g++.dg/reflect/p3394-1.C: New test.
+ * g++.dg/reflect/p3491-1.C: New test.
+ * g++.dg/reflect/p3491-2.C: New test.
+ * g++.dg/reflect/p3491-3.C: New test.
+ * g++.dg/reflect/pack-index1.C: New test.
+ * g++.dg/reflect/parameters_of1.C: New test.
+ * g++.dg/reflect/parameters_of2.C: New test.
+ * g++.dg/reflect/parameters_of3.C: New test.
+ * g++.dg/reflect/parameters_of4.C: New test.
+ * g++.dg/reflect/parameters_of5.C: New test.
+ * g++.dg/reflect/parameters_of6.C: New test.
+ * g++.dg/reflect/parent_of1.C: New test.
+ * g++.dg/reflect/parm1.C: New test.
+ * g++.dg/reflect/parm2.C: New test.
+ * g++.dg/reflect/parm3.C: New test.
+ * g++.dg/reflect/parm4.C: New test.
+ * g++.dg/reflect/pr122634-1.C: New test.
+ * g++.dg/reflect/pr122634-2.C: New test.
+ * g++.dg/reflect/qrn1.C: New test.
+ * g++.dg/reflect/qrn2.C: New test.
+ * g++.dg/reflect/range_args.C: New test.
+ * g++.dg/reflect/reflect_constant1.C: New test.
+ * g++.dg/reflect/reflect_constant2.C: New test.
+ * g++.dg/reflect/reflect_constant3.C: New test.
+ * g++.dg/reflect/reflect_constant4.C: New test.
+ * g++.dg/reflect/reflect_constant5.C: New test.
+ * g++.dg/reflect/reflect_constant6.C: New test.
+ * g++.dg/reflect/reflect_constant7.C: New test.
+ * g++.dg/reflect/reflect_constant8.C: New test.
+ * g++.dg/reflect/reflect_constant9.C: New test.
+ * g++.dg/reflect/reflect_constant_array1.C: New test.
+ * g++.dg/reflect/reflect_constant_array2.C: New test.
+ * g++.dg/reflect/reflect_constant_array3.C: New test.
+ * g++.dg/reflect/reflect_constant_array4.C: New test.
+ * g++.dg/reflect/reflect_constant_string1.C: New test.
+ * g++.dg/reflect/reflect_constant_string2.C: New test.
+ * g++.dg/reflect/reflect_function1.C: New test.
+ * g++.dg/reflect/reflect_function2.C: New test.
+ * g++.dg/reflect/reflect_object1.C: New test.
+ * g++.dg/reflect/reflect_object2.C: New test.
+ * g++.dg/reflect/reflect_object3.C: New test.
+ * g++.dg/reflect/reflect_object4.C: New test.
+ * g++.dg/reflect/return_type_of1.C: New test.
+ * g++.dg/reflect/return_type_of2.C: New test.
+ * g++.dg/reflect/serialize1.C: New test.
+ * g++.dg/reflect/serialize2.C: New test.
+ * g++.dg/reflect/size_of1.C: New test.
+ * g++.dg/reflect/source_location_of1.C: New test.
+ * g++.dg/reflect/source_location_of2.C: New test.
+ * g++.dg/reflect/splice1.C: New test.
+ * g++.dg/reflect/splice2.C: New test.
+ * g++.dg/reflect/splice3.C: New test.
+ * g++.dg/reflect/splice4.C: New test.
+ * g++.dg/reflect/splice5.C: New test.
+ * g++.dg/reflect/splice6.C: New test.
+ * g++.dg/reflect/splice7.C: New test.
+ * g++.dg/reflect/splicing-base1.C: New test.
+ * g++.dg/reflect/splicing-base2.C: New test.
+ * g++.dg/reflect/splicing-base3.C: New test.
+ * g++.dg/reflect/splicing-base4.C: New test.
+ * g++.dg/reflect/storage_duration1.C: New test.
+ * g++.dg/reflect/storage_duration2.C: New test.
+ * g++.dg/reflect/storage_duration3.C: New test.
+ * g++.dg/reflect/subobjects_of1.C: New test.
+ * g++.dg/reflect/substitute1.C: New test.
+ * g++.dg/reflect/substitute2.C: New test.
+ * g++.dg/reflect/symbol_of1.C: New test.
+ * g++.dg/reflect/symbol_of2.C: New test.
+ * g++.dg/reflect/template_arguments_of1.C: New test.
+ * g++.dg/reflect/template_arguments_of2.C: New test.
+ * g++.dg/reflect/template_arguments_of3.C: New test.
+ * g++.dg/reflect/template_of1.C: New test.
+ * g++.dg/reflect/template_of2.C: New test.
+ * g++.dg/reflect/template_of3.C: New test.
+ * g++.dg/reflect/tuple1.C: New test.
+ * g++.dg/reflect/tuple2.C: New test.
+ * g++.dg/reflect/type1.C: New test.
+ * g++.dg/reflect/type10.C: New test.
+ * g++.dg/reflect/type2.C: New test.
+ * g++.dg/reflect/type3.C: New test.
+ * g++.dg/reflect/type4.C: New test.
+ * g++.dg/reflect/type5.C: New test.
+ * g++.dg/reflect/type6.C: New test.
+ * g++.dg/reflect/type7.C: New test.
+ * g++.dg/reflect/type8.C: New test.
+ * g++.dg/reflect/type9.C: New test.
+ * g++.dg/reflect/type_of1.C: New test.
+ * g++.dg/reflect/type_of2.C: New test.
+ * g++.dg/reflect/type_rels1.C: New test.
+ * g++.dg/reflect/type_trait1.C: New test.
+ * g++.dg/reflect/type_trait10.C: New test.
+ * g++.dg/reflect/type_trait11.C: New test.
+ * g++.dg/reflect/type_trait12.C: New test.
+ * g++.dg/reflect/type_trait13.C: New test.
+ * g++.dg/reflect/type_trait2.C: New test.
+ * g++.dg/reflect/type_trait3.C: New test.
+ * g++.dg/reflect/type_trait4.C: New test.
+ * g++.dg/reflect/type_trait5.C: New test.
+ * g++.dg/reflect/type_trait6.C: New test.
+ * g++.dg/reflect/type_trait8.C: New test.
+ * g++.dg/reflect/type_trait9.C: New test.
+ * g++.dg/reflect/u8display_string_of1.C: New test.
+ * g++.dg/reflect/u8identifier_of1.C: New test.
+ * g++.dg/reflect/u8symbol_of1.C: New test.
+ * g++.dg/reflect/underlying_type1.C: New test.
+ * g++.dg/reflect/using1.C: New test.
+ * g++.dg/reflect/value_or_object1.C: New test.
+ * g++.dg/reflect/variable_of1.C: New test.
+ * g++.dg/reflect/variable_of2.C: New test.
+ * g++.dg/reflect/variable_of3.C: New test.
+ * g++.dg/reflect/variant1.C: New test.
+ * g++.dg/reflect/variant2.C: New test.
+ * g++.dg/reflect/vector1.C: New test.
+ * g++.dg/reflect/visibility1.C: New test.
+
+2026-01-15 Stefan Schulze Frielinghaus <stefansf@gcc.gnu.org>
+
+ * gcc.target/powerpc/asm-hard-reg-1.c: New test.
+
+2026-01-15 Stefan Schulze Frielinghaus <stefansf@gcc.gnu.org>
+
+ * gcc.dg/asm-hard-reg-error-1.c: Remove tests containing
+ multiple hard register constraints in one alternative.
+ * gcc.dg/asm-hard-reg-error-6.c: New test.
+
+2026-01-15 Richard Biener <rguenther@suse.de>
+
+ * gcc.dg/vect/fast-math-slp-38.c: Avoid epilogue vectorization.
+
+2026-01-15 Richard Biener <rguenther@suse.de>
+
+ * gcc.dg/vect/complex/fast-math-complex-add-half-float.c:
+ Avoid epilogue vectorization.
+
+2026-01-15 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/120322
+ * gcc.dg/torture/pr120322.c: New test.
+
+2026-01-15 Kugan Vivekanandarajah <kvivekananda@nvidia.com>
+
+ * gcc.dg/hierarchical-discriminator-unroll.c: New test.
+
+2026-01-15 Kugan Vivekanandarajah <kvivekananda@nvidia.com>
+
+ * gcc.dg/hierarchical-discriminator-loop-version.c: New test.
+
+2026-01-15 Kugan Vivekanandarajah <kvivekananda@nvidia.com>
+
+ * gcc.dg/hierarchical-discriminator-vect-version.c: New test.
+
+2026-01-15 DengJianbo <dengjianbo@loongson.cn>
+
+ * gcc.target/loongarch/la64/attr-model-6.c: New test.
+
2026-01-14 Qing Zhao <qing.zhao@oracle.com>
* gcc.dg/counted-by-anonymous-2-char.c: New test.