https://gcc.gnu.org/g:ea25b429a3120535d5e6a463c379704d22927d4d
commit r16-6813-gea25b429a3120535d5e6a463c379704d22927d4d Author: GCC Administrator <[email protected]> Date: Fri Jan 16 00:16:30 2026 +0000 Daily bump. Diff: --- gcc/ChangeLog | 179 +++++++++++++++++ gcc/DATESTAMP | 2 +- gcc/algol68/ChangeLog | 9 + gcc/c-family/ChangeLog | 15 ++ gcc/cp/ChangeLog | 275 ++++++++++++++++++++++++++ gcc/testsuite/ChangeLog | 505 ++++++++++++++++++++++++++++++++++++++++++++++++ libcc1/ChangeLog | 9 + libcpp/ChangeLog | 19 ++ libgomp/ChangeLog | 5 + libstdc++-v3/ChangeLog | 36 ++++ 10 files changed, 1053 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c03bb0986234..be5576dbef1c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,182 @@ +2026-01-15 Marek Polacek <[email protected]> + Jakub Jelinek <[email protected]> + + 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 <[email protected]> + + 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 <[email protected]> + + * 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 <[email protected]> + + * 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 <[email protected]> + + * 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 <[email protected]> + + * 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 <[email protected]> + + 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 <[email protected]> + + * config/i386/sol2.h [!HAVE_GNU_AS] (ASM_CPU32_DEFAULT_SPEC): Use -m32. + (ASM_CPU64_DEFAULT_SPEC): Use -m64. + +2026-01-15 Josef Melcr <[email protected]> + + 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 <[email protected]> + + * 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 <[email protected]> + + * 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 <[email protected]> + + PR target/38118 + * config/sparc/sol2.h (ASM_OUTPUT_ALIGNED_COMMON): Remove. + +2026-01-15 Kugan Vivekanandarajah <[email protected]> + + * 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 <[email protected]> + + * gimple-loop-versioning.cc (loop_versioning::version_loop): Assign + copyid discriminators to distinguish different loop versions. + +2026-01-15 Kugan Vivekanandarajah <[email protected]> + + * 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 <[email protected]> + + * 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 <[email protected]> + + * config/loongarch/loongarch.md: Remove condition in template + movdi_symbolic_off64. + 2026-01-14 Peter Bergner <[email protected]> PR target/123092 diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index f3da546535c3..9902c08b8a2b 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20260115 +20260116 diff --git a/gcc/algol68/ChangeLog b/gcc/algol68/ChangeLog index 38e6c769f4e9..6c6aded2dbc4 100644 --- a/gcc/algol68/ChangeLog +++ b/gcc/algol68/ChangeLog @@ -1,3 +1,12 @@ +2026-01-15 Jose E. Marchesi <[email protected]> + + * ga68.texi (POSIX files): Fix documentation of lseek. + +2026-01-15 Jose E. Marchesi <[email protected]> + + * ga68.texi (Dialect options): {..} is not a valid variant of + (...). + 2026-01-10 Pietro Monteiro <[email protected]> * a68-low-posix.cc (a68_posix_setexitstatus): Delete function. diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index 28b4409f2626..54e1262cff92 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,18 @@ +2026-01-15 Jakub Jelinek <[email protected]> + + * c.opt.urls: Regenerate. + +2026-01-15 Marek Polacek <[email protected]> + Jakub Jelinek <[email protected]> + + PR c++/120775 + PR c++/123081 + PR c++/122634 + * c-attribs.cc (attribute_takes_identifier_p): Return false for C++ + annotations. Handle "old parm name". + * c-cppbuiltin.cc (c_cpp_builtins): Define __cpp_impl_reflection. + * c.opt (freflection): New. + 2026-01-07 Tobias Burnus <[email protected]> * c-omp.cc (c_omp_directives): Uncomment 'groupprivate'. diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 8f51e173298b..0c6f54f35783 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,278 @@ +2026-01-15 Marek Polacek <[email protected]> + Jakub Jelinek <[email protected]> + + 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 <[email protected]> * call.cc (get_fndecl_argument_location): Use DECL_SOURCE_LOCATION diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 2d307c2903d4..d71a5be466a4 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,508 @@ +2026-01-15 Pengxuan Zheng <[email protected]> + + * gcc.dg/pr123109.c: Require target x86_64 and aarch64. + +2026-01-15 Jeff Law <[email protected]> + + * gcc.target/riscv/rvv/autovec/pr122445.c: Adjust expected output. + +2026-01-15 Marek Polacek <[email protected]> + Jakub Jelinek <[email protected]> + + 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 <[email protected]> + + * gcc.target/powerpc/asm-hard-reg-1.c: New test. + +2026-01-15 Stefan Schulze Frielinghaus <[email protected]> + + * 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 <[email protected]> + + * gcc.dg/vect/fast-math-slp-38.c: Avoid epilogue vectorization. + +2026-01-15 Richard Biener <[email protected]> + + * gcc.dg/vect/complex/fast-math-complex-add-half-float.c: + Avoid epilogue vectorization. + +2026-01-15 Jakub Jelinek <[email protected]> + + PR tree-optimization/120322 + * gcc.dg/torture/pr120322.c: New test. + +2026-01-15 Kugan Vivekanandarajah <[email protected]> + + * gcc.dg/hierarchical-discriminator-unroll.c: New test. + +2026-01-15 Kugan Vivekanandarajah <[email protected]> + + * gcc.dg/hierarchical-discriminator-loop-version.c: New test. + +2026-01-15 Kugan Vivekanandarajah <[email protected]> + + * gcc.dg/hierarchical-discriminator-vect-version.c: New test. + +2026-01-15 DengJianbo <[email protected]> + + * gcc.target/loongarch/la64/attr-model-6.c: New test. + 2026-01-14 Qing Zhao <[email protected]> * gcc.dg/counted-by-anonymous-2-char.c: New test. diff --git a/libcc1/ChangeLog b/libcc1/ChangeLog index 083f170da268..11eb11a2e51c 100644 --- a/libcc1/ChangeLog +++ b/libcc1/ChangeLog @@ -1,3 +1,12 @@ +2026-01-15 Marek Polacek <[email protected]> + Jakub Jelinek <[email protected]> + + PR c++/120775 + PR c++/123081 + PR c++/122634 + * libcp1plugin.cc (start_class_def): Update the call to + finish_base_specifier. + 2025-12-29 Rainer Orth <[email protected]> * configure: Regenerate. diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog index d7c13b766635..264defe2a250 100644 --- a/libcpp/ChangeLog +++ b/libcpp/ChangeLog @@ -1,3 +1,22 @@ +2026-01-15 Marek Polacek <[email protected]> + Jakub Jelinek <[email protected]> + + PR c++/120775 + PR c++/123081 + PR c++/122634 + * charset.cc (_cpp_destroy_iconv): Destroy narrow_cset_desc and + utf8_cset_desc. + (cpp_translate_string): New. + (cpp_valid_identifier): New. + * include/cpplib.h: Add OPEN_SPLICE, CLOSE_SPLICE, and REFLECT_OP to + TTYPE_TABLE. + (cpp_translate_string): Declare. + (cpp_valid_identifier): Declare. + * internal.h (struct cpp_reader): Add reverse_narrow_cset_desc and + reverse_utf8_cset_desc fields. + * lex.cc (_cpp_lex_direct): Emit CPP_CLOSE_SPLICE, CPP_REFLECT_OP, + and CPP_OPEN_SPLICE tokens. + 2026-01-09 Ben Boeckel <[email protected]> * configure: Regenerate. diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog index 99ebea880d66..2f5ea041cf8a 100644 --- a/libgomp/ChangeLog +++ b/libgomp/ChangeLog @@ -1,3 +1,8 @@ +2026-01-15 Josef Melcr <[email protected]> + + PR ipa/122852 + * testsuite/libgomp.c/pr122852.c: New test. + 2026-01-14 Thomas Schwinge <[email protected]> * testsuite/libgomp.c++/target-std__unordered_map-concurrent-usm.C: diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index c9c2ca8b9078..b20d7173fb08 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,39 @@ +2026-01-15 Jakub Jelinek <[email protected]> + + * include/std/type_traits (std::is_reflection, std::is_fundamental, + std::is_reflection_v, std::is_consteval_only): Compare + __cpp_impl_reflection >= 202506L instead of 202500L. + * testsuite/20_util/variable_templates_for_traits.cc: Likewise. + +2026-01-15 Marek Polacek <[email protected]> + Jakub Jelinek <[email protected]> + + PR c++/120775 + PR c++/123081 + PR c++/122634 + * include/Makefile.am (std_headers): Add ${std_srcdir}/meta. + * include/Makefile.in: Regenerate. + * include/bits/iterator_concepts.h (std::ranges::__access::__begin): Add + constexpr. + * include/bits/version.def (reflection): New. + * include/bits/version.h: Regenerate. + * include/precompiled/stdc++.h: Include <meta> for C++26. + * include/std/meta: New file. + * include/std/type_traits (std::is_reflection): New trait. + (std::is_fundamental): Include is_reflection for C++26 -freflection. + (std::is_reflection_v): New variable template. + (std::is_consteval_only): New trait. + (std::is_consteval_only_v): New variable template. + * src/c++23/std.cc.in: Add <meta> exports. + * testsuite/20_util/variable_templates_for_traits.cc: Add -freflection as + dg-additional-options for C++26. Add std::is_reflection_v test in that case. + * testsuite/20_util/is_consteval_only/requirements/explicit_instantiation.cc: New test. + * testsuite/20_util/is_consteval_only/requirements/typedefs.cc: New test. + * testsuite/20_util/is_consteval_only/value.cc: New test. + * testsuite/20_util/is_reflection/requirements/explicit_instantiation.cc: New test. + * testsuite/20_util/is_reflection/requirements/typedefs.cc: New test. + * testsuite/20_util/is_reflection/value.cc: New test. + 2026-01-14 Tomasz KamiĆski <[email protected]> * testsuite/util/testsuite_iterators.h: Modify comment.
