+2025-12-15 Martin Jambor <mjambor@suse.cz>
+
+ PR ipa/107666
+ * common.opt (fspeculatively-call-stored-functions): New.
+ * cgraph.h (cgraph_simple_indirect_info): New fields rec_type and
+ fld_offset.
+ * ipa-prop.h (ipa_analyze_var_static_initializer): Declare.
+ (ipa_dump_noted_record_fnptrs): Likewise.
+ (ipa_debug_noted_record_fnptrs): Likewise.
+ (ipa_single_noted_fnptr_in_record): Likewise.
+ (ipa_free_noted_fnptr_calls): Likewise.
+ * ipa-cp.cc (ipcp_generate_summary): Call
+ ipa_analyze_var_static_initializer on each varbool node with a static
+ initializer.
+ * ipa-devirt.cc (struct devirt_stats): New type.
+ (devirt_target_ok_p): New function.
+ (ipa_devirt): Move statistics counters to the new structure. dump
+ noted function pointers stored in records. Check for edge hotness
+ first and for odr_types only for polymorphic edges. Moved a number of
+ checks to devirt_target_ok_p. Also add speculative direct calls for
+ non-polymorphic indirect ones when ipa_single_noted_fnptr_in_record
+ finds a likely target. Call ipa_free_noted_fnptr_calls.
+ (pass_ipa_devirt::gate): Also check the new flag.
+ * ipa-prop.cc (noted_fnptr_store): New type.
+ (struct noted_fnptr_hasher): Likewise.
+ (noted_fnptr_hasher::hash): New function.
+ (noted_fnptr_hasher::equal): Likewise.
+ (noted_fnptrs_in_records): New.
+ (is_func_ptr_from_record): New function.
+ (ipa_analyze_indirect_call_uses): Also simple create indirect info
+ structures with fnptr_loaded_from_record set.
+ (note_fnptr_in_record): New function.
+ (ipa_dump_noted_record_fnptrs): Likewise.
+ (ipa_debug_noted_record_fnptrs): Likewise.
+ (ipa_single_noted_fnptr_in_record): Likewise.
+ (ipa_free_noted_fnptr_calls): Likewise.
+ (ipa_analyze_stmt_uses): Also look for stroes of function pointers to
+ record structures.
+ (ipa_analyze_var_static_initializer): New function.
+ (ipa_write_indirect_edge_info): Also stream fnptr_loaded_from_record
+ indirec infos.
+ (ipa_read_indirect_edge_info): Likewise.
+ (ipa_prop_write_jump_functions): Also stream the contents of
+ noted_fnptrs_in_records.
+ (ipa_prop_read_section): Likewise.
+ * opts.cc (default_options_table): Also turn on
+ OPT_fspeculatively_call_stored_functions at -O2.
+ (common_handle_option): Turn flag_speculatively_call_stored_functions
+ when using profile feedback.
+ * doc/invoke.texi (-fspeculatively-call-stored-functions): New.
+
+2025-12-15 Martin Jambor <mjambor@suse.cz>
+
+ * cgraph.h (cgraph_node): Adjust the comment of member function
+ create_indirect_edge.
+ (enum cgraph_indirect_info_kind): New.
+ (cgraph_indirect_call_info): Convert into a base class.
+ (cgraph_simple_indirect_info): New.
+ (cgraph_polymorphic_indirect_info): Likewise.
+ (usable_polymorphic_info_p): Likewise.
+ (is_a_helper <cgraph_simple_indirect_info *>::test): Likewise.
+ (is_a_helper <cgraph_polymorphic_indirect_info *>::test): Likewise.
+ (cgraph_allocate_init_indirect_info): Remove declaration.
+ (ipa_polymorphic_call_context::ipa_polymorphic_call_context): Use the
+ appropriate derived type of indirect info.
+ * cgraph.cc (cgraph_allocate_init_indirect_info): Removed.
+ (cgraph_node::create_indirect_edge): Create an appropriate type of
+ indirect_info.
+ (cgraph_node::dump): Dump indirect info using its dump function.
+ (cgraph_indirect_call_info::dump): New function.
+ (cgraph_indirect_call_info::debug): Likewise.
+ * cgraphclones.cc (cgraph_edge::clone): Create an appropriate type of
+ indirect_info.
+ * cgraphunit.cc (analyze_functions): Use the appropriate derived type
+ of indirect info.
+ * ipa-cp.cc (initialize_node_lattices): Adjust the check for
+ polymorphic indirect info.
+ (ipa_get_indirect_edge_target_1): Use the appropriate derived types of
+ indirect info.
+ (ipcp_discover_new_direct_edges): Likewise.
+ * ipa-devirt.cc (ipa_devirt): Use the polymorphis derived type of
+ indirect info and check that it is usable.
+ * ipa-inline.cc (dump_inline_stats): Adjust the check for polymorphic
+ indirect info.
+ * ipa-profile.cc (ipa_profile): Likewise and check usability.
+ * ipa-prop.cc (ipa_print_node_jump_functions): Dump indirect info
+ using its dumping member function.
+ (ipa_note_param_call): Removed.
+ (ipa_analyze_indirect_call_uses): Use the appropriate derived type of
+ indirect info, set all fields of indirect info separately rather than
+ relying on ipa_note_param_call.
+ (ipa_analyze_virtual_call_uses): Use the polymorphis derived type of
+ indirect info and check that it is usable, set all fields of indirect
+ info separately rather than relying on ipa_note_param_call.
+ (ipa_analyze_call_uses): Use the appropriate derived type of indirect
+ info.
+ (ipa_make_edge_direct_to_target): Use the appropriate derived type of
+ indirect info. Remove wrong note that member_ptr check was not
+ needed. Adjust check for polymorphic call when dumping.
+ (try_make_edge_direct_simple_call): Use the appropriate derived type
+ of indirect info.
+ (try_make_edge_direct_virtual_call): Use the polymorphis derived type
+ of indirect info and check that it is usable.
+ (update_indirect_edges_after_inlining): Use the appropriate derived
+ type of indirect info. Define local variables only before their first
+ use.
+ (ipa_write_indirect_edge_info): Also stream indirect info kind. Use
+ the appropriate derived type of indirect info.
+ (ipa_read_indirect_edge_info): Check that the streamed in indirect
+ info kind matches rthe structure at hand. Use the appropriate derived
+ type of indirect info.
+ * ipa-utils.h (possible_polymorphic_call_targets): Use the
+ polymorphis derived type of indirect info. Assert it is usable.
+ (dump_possible_polymorphic_call_targets): Use the polymorphis
+ derived type of indirect info and check it is usable.
+ (possible_polymorphic_call_target_p): Likewise.
+ * ipa.cc (symbol_table::remove_unreachable_nodes): Use
+ usable_polymorphic_info_p.
+ * lto-cgraph.cc (lto_output_edge): Stream indirect info kind.
+ (compute_ltrans_boundary): Use usable_polymorphic_info_p.
+ (input_edge): Move definition of ecf_flags before its first use.
+ Pass true as the last parameter to create_indirect_edge. Stream
+ indirect info kind and create a corresponding type to hold the
+ information.
+ * trans-mem.cc (ipa_tm_insert_gettmclone_call): Use the
+ polymorphis derived type of indirect info.
+
+2025-12-15 Martin Jambor <mjambor@suse.cz>
+
+ * gengtype.cc (walk_subclasses): Avoid generating code with unused
+ variables.
+
+2025-12-15 Pengxuan Zheng <pengxuan.zheng@oss.qualcomm.com>
+
+ PR tree-optimization/122987
+ * tree-ssa-ifcombine.cc (ifcombine_ifandif): Replace
+ force_gimple_operand_gsi with gimple_build.
+
+2025-12-15 Joseph Myers <josmyers@redhat.com>
+
+ * Makefile.in (PLUGIN_HEADERS): Add $(srcdir)/text-art/*.h.
+ (install-plugin): Preserve directory structure for text-art
+ headers.
+
+2025-12-15 Alfie Richards <alfie.richards@arm.com>
+
+ * config/aarch64/aarch64-cores.def (cortex-a320): New core.
+ * config/aarch64/aarch64-tune.md: Regenerate.
+
+2025-12-15 Victor Do Nascimento <victor.donascimento@arm.com>
+
+ * tree-vect-loop.cc (vect_analyze_loop_form): Relax niters
+ condition.
+
+2025-12-15 Victor Do Nascimento <victor.donascimento@arm.com>
+
+ * tree-vect-data-refs.cc (vect_enhance_data_refs_alignment):
+ Enable peeling for uncounted loops.
+ * tree-vect-loop-manip.cc
+ (slpeel_tree_duplicate_loop_to_edge_cfg): Add exit condition
+ duplication functionality.
+ * tree-vectorizer.h (slpeel_tree_duplicate_loop_to_edge_cfg):
+ Modify function signature.
+ (vect_do_peeling): Enable uncounted loop peeling.
+
+2025-12-15 Victor Do Nascimento <victor.donascimento@arm.com>
+
+ * tree-vect-data-refs.cc (vect_prune_runtime_alias_test_list):
+ Reject when !operand_equal_p for any data ref pair.
+
+2025-12-15 Victor Do Nascimento <victor.donascimento@arm.com>
+
+ * tree-vect-loop.cc (vect_analyze_loop_2): Disable partial
+ vector use for uncounted loops.
+
+2025-12-15 Victor Do Nascimento <victor.donascimento@arm.com>
+
+ * tree-vect-loop-manip.cc (slpeel_tree_duplicate_loop_to_edge_cfg):
+ reset IVs and accumulators for all exits for uncounted loops.
+ * tree-vectorizer.h (slpeel_tree_duplicate_loop_to_edge_cfg):
+ add boolean `uncounted_p' argument.
+
+2025-12-15 Victor Do Nascimento <victor.donascimento@arm.com>
+
+ * tree-vect-loop-manip.cc (vect_do_peeling): Disable vector
+ loop skip checking.
+ (vect_loop_versioning): skip profitability check for uncounted loops.
+
+2025-12-15 Victor Do Nascimento <victor.donascimento@arm.com>
+
+ * tree-vect-loop-manip.cc (vect_do_peeling): Disable niters
+ update.
+ * tree-vect-loop.cc (vect_transform_loop): Likewise.
+
+2025-12-15 Victor Do Nascimento <victor.donascimento@arm.com>
+
+ * tree-vectorizer.h (LOOP_VINFO_IV_EXIT): Replace this...
+ (LOOP_VINFO_MAIN_EXIT): ...with this.
+ (LOOP_VINFO_EPILOGUE_IV_EXIT): Replace this...
+ (LOOP_VINFO_EPILOGUE_MAIN_EXIT): ...with this.
+ (LOOP_VINFO_SCALAR_IV_EXIT): Replace this...
+ (LOOP_VINFO_SCALAR_MAIN_EXIT): ...with this.
+ (class _loop_vec_info): s/iv/main for `vec_loop_iv_exit',
+ `vec_epilogue_loop_main_exit' and `scalar_loop_main_exit'
+ class members.
+ * tree-vect-data-refs.cc
+ (vect_enhance_data_refs_alignment):
+ s/LOOP_VINFO_IV_EXIT/LOOP_VINFO_MAIN_EXIT/.
+ * tree-vect-loop-manip.cc
+ (vect_set_loop_controls_directly): Likewise.
+ (vect_gen_vector_loop_niters_mult_vf): Likewise.
+ (vect_loop_versioning): Likewise.
+ (vect_do_peeling):
+ s/LOOP_VINFO_IV_EXIT/LOOP_VINFO_MAIN_EXIT/,
+ s/LOOP_VINFO_SCALAR_IV_EXIT/LOOP_VINFO_SCALAR_MAIN_EXIT,
+ s/LOOP_VINFO_EPILOGUE_IV_EXIT/LOOP_VINFO_EPILOGUE_MAIN_EXIT.
+ * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info):
+ s/iv_exit/main_exit/ in initializer list.
+ (vec_init_loop_exit_info): Handle multiple-exit uncounted loops.
+ (vect_analyze_loop_form): Fix `failure_at' message.
+ (vect_create_loop_vinfo):
+ s/LOOP_VINFO_IV_EXIT/LOOP_VINFO_MAIN_EXIT/.
+ (vect_create_epilog_for_reduction): Likewise.
+ (vectorizable_live_operation): Likewise.
+ (vect_update_ivs_after_vectorizer_for_early_breaks): Likewise.
+ (vect_transform_loop):
+ s/LOOP_VINFO_IV_EXIT/LOOP_VINFO_MAIN_EXIT/,
+ s/LOOP_VINFO_SCALAR_IV_EXIT/LOOP_VINFO_SCALAR_MAIN_EXIT.
+ * tree-vectorizer.cc (set_uid_loop_bbs):
+ s/LOOP_VINFO_SCALAR_IV_EXIT/LOOP_VINFO_SCALAR_MAIN_EXIT.
+
+2025-12-15 Victor Do Nascimento <victor.donascimento@arm.com>
+
+ * tree-vectorizer.h (LOOP_VINFO_EARLY_BREAKS_VECT_PEELED): OR
+ its current definition with `LOOP_VINFO_NITERS_UNCOUNTED_P(L)'
+ * tree-vect-loop.cc (vect_create_loop_vinfo): Don't populate
+ `LOOP_VINFO_LOOP_IV_COND' for uncounted loops.
+
+2025-12-15 Victor Do Nascimento <victor.donascimento@arm.com>
+
+ * tree-vect-loop-manip.cc (vect_build_loop_niters): Gracefully
+ handle uncounted loops.
+ (vect_gen_prolog_loop_niters): Add type default of `sizetype'.
+ (vect_gen_vector_loop_niters): Likewise.
+ (vect_do_peeling): Likewise.
+ * tree-vect-loop.cc (vect_min_prec_for_max_niters): Likewise.
+ (loop_niters_no_overflow): Likewise.
+ * tree-vectorizer.h (LOOP_VINFO_NITERS_UNCOUNTED_P): New.
+
+2025-12-15 Peter Damianov <peter0x44@disroot.org>
+
+ PR target/108866
+ * doc/install.texi: Document --with-windres configure option.
+
+2025-12-15 Peter Damianov <peter0x44@disroot.org>
+
+ PR target/108866
+ * gcc.cc (find_a_program): Add check for DEFAULT_WINDRES.
+ * configure.ac: Add --with-windres= option.
+ * config.in: Regenerate.
+ * configure: Regenerate.
+
+2025-12-15 Peter Damianov <peter0x44@disroot.org>
+
+ PR driver/108866
+ * gcc.cc (default_compilers): Add EXTRA_DEFAULT_COMPILERS so the config
+ of a target can add an extra compiler spec to default_compilers.
+ * config/i386/cygming.h (WINDRES_FORMAT_SPEC): New macro to handle
+ PE format selection based on TARGET_64BIT_DEFAULT and -m32/-m64 flags.
+ (EXTRA_DEFAULT_COMPILERS): Add spec for windres.
+ * config/aarch64/cygming.h (EXTRA_DEFAULT_COMPILERS): Likewise.
+
+2025-12-15 Jerry Zhang Jian <jerry.zhangjian@sifive.com>
+
+ * config/riscv/gen-riscv-ext-opt.cc: Rename UPPERCAE_NAME to
+ UPPERCASE_NAME.
+ * config/riscv/gen-riscv-ext-texi.cc: Likewise.
+ * config/riscv/riscv-ext-corev.def: Likewise.
+ * config/riscv/riscv-ext-sifive.def: Likewise.
+ * config/riscv/riscv-ext-thead.def: Likewise.
+ * config/riscv/riscv-ext-ventana.def: Likewise.
+
2025-12-14 Lewis Hyatt <lhyatt@gmail.com>
PR tree-optimization/106409
+2025-12-15 Patrick Palka <ppalka@redhat.com>
+
+ * parser.cc (cp_parser_template_id): Rebuild instead of modifying
+ a TYPENAME_TYPE corresponding to a dependently-scoped template.
+
+2025-12-15 Patrick Palka <ppalka@redhat.com>
+
+ * cp-tree.h (TYPENAME_TYPE_TAG_BIT_0): New.
+ (TYPENAME_TYPE_TAG_BIT_1): New.
+ (TYPENAME_TYPE_TAG_BIT_2): New.
+ (TYPENAME_IS_ENUM_P): Use get_typename_tag.
+ (TYPENAME_IS_CLASS_P): Rename to ...
+ (TYPENAME_IS_CLASS_OR_STRUCT_P): ... this, and use
+ get_typename_tag.
+ (TYPENAME_IS_UNION_P): Use get_typename_tag.
+ (TYPENAME_IS_RESOLVING_P): Use TREE_LANG_FLAG_3
+ instead of _2.
+ (get_typename_tag): New.
+ (set_typename_tag): New.
+ (tag_name): Declare.
+ * decl.cc (typename_info): Replace bool fields with a single
+ tag_types field.
+ (typename_hasher::equal): Adjust.
+ (build_typename_type): Adjust.
+ (tag_name): Handle none_type and scope_type.
+ * error.cc (dump_type) <case TYPENAME_TYPE>: Use tag_name.
+ * module.cc (trees_out::type_node) <case TYPENAME_TYPE>: Use
+ get_typename_tag.
+ * pt.cc (tsubst) <case TYPENAME_TYPE>: Likewise.
+
+2025-12-15 Patrick Palka <ppalka@redhat.com>
+
+ * cp-tree.h (CLASSTYPE_LAMBDA_EXPR): Check CLASS_TYPE_P before
+ inspecting TYPE_POLYMORPHIC_P.
+ (TYPE_POLYMORPHIC_P): Restrict to RECORD_TYPE or UNION_TYPE.
+ Document its use of TREE_LANG_FLAG_2.
+ * parser.cc (noexcept_override_late_checks): Only
+ check TYPE_POLYMORPHIC_P on CLASS_TYPE_P types.
+ * rtti.cc (build_headof): Likewise.
+ (get_tinfo_ptr_dynamic): Likewise.
+ (build_typeid): Likewise.
+
+2025-12-15 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/122752
+ * pt.cc (tsubst) <case TYPENAME_TYPE>: Allow TYPENAME_TYPE
+ resolving to another wildcard type.
+
+2025-12-15 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/122668
+ PR c++/114764
+ * parser.cc (cp_parser_class_specifier): Adjust after
+ changing the element type of unparsed_noexcepts. Pass
+ the class type to noexcept_override_late_checks.
+ (cp_parser_member_declaration): Set
+ CP_PARSER_FLAGS_DELAY_NOEXCEPT also for templated friends.
+ (noexcept_override_late_checks): Add class_type parameter.
+ (cp_parser_single_declaration): Set
+ CP_PARSER_FLAGS_DELAY_NOEXCEPT also for template friends
+ at class template scope.
+ (cp_parser_save_default_args): Push current_class_type
+ to unparsed_noexcepts.
+ * parser.h (cp_unparsed_functions_entry::noexcepts):
+ Change element type to cp_default_arg_entry.
+ * pt.cc (dependentish_scope_p): Revert r16-5425 change.
+
+2025-12-15 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/123128
+ * parser.cc (cp_parser_omp_clause_linear): Initialize next to NULL
+ rather than UNKNOWN_LOCATION.
+
2025-12-13 Jakub Jelinek <jakub@redhat.com>
* parser.cc (cp_parser_omp_clause_reduction): Provide fixit hints
+2025-12-15 Martin Jambor <mjambor@suse.cz>
+
+ * gcc.dg/lto/fnptr-from-rec-1_0.c: New test.
+ * gcc.dg/lto/fnptr-from-rec-1_1.c: Likewise.
+ * gcc.dg/lto/fnptr-from-rec-2_0.c: Likewise.
+ * gcc.dg/lto/fnptr-from-rec-2_1.c: Likewise.
+ * gcc.dg/lto/fnptr-from-rec-3_0.c: Likewise.
+ * gcc.dg/lto/fnptr-from-rec-3_1.c: Likewise.
+
+2025-12-15 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/reduce4.adb: New test.
+ * gnat.dg/reduce5.adb: Likewise.
+
+2025-12-15 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR libfortran/122936
+ * gfortran.dg/pr122936.f90: New test.
+
+2025-12-15 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/122752
+ * g++.dg/template/dependent-name19.C: New test.
+
+2025-12-15 Patrick Palka <ppalka@redhat.com>
+
+ PR c++/122668
+ PR c++/114764
+ * g++.dg/cpp0x/noexcept91a.C: New test.
+
+2025-12-15 Joseph Myers <josmyers@redhat.com>
+
+ * lib/plugin-support.exp (plugin-test-execute): Support installed
+ testing.
+ * g++.dg/plugin/plugin.exp, gcc.dg/plugin/plugin.exp,
+ obj-c++.dg/plugin/plugin.exp, objc.dg/plugin/plugin.exp: Do not
+ disable for installed testing.
+
+2025-12-15 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/123085
+ * c-c++-common/analyzer/strlen-pr123085.c: New test.
+
+2025-12-15 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/122975
+ * c-c++-common/analyzer/arith-1.c: New test.
+ * c-c++-common/analyzer/infinite-recursion-pr122975.c: New test.
+
+2025-12-15 Victor Do Nascimento <victor.donascimento@arm.com>
+
+ * gcc.dg/vect/vect-early-break_40.c: Fix.
+ * gcc.dg/gomp/static-chunk-size-one.c: Likewise.
+ * gcc.dg/vect/vect-uncounted_1.c: New.
+ * gcc.dg/vect/vect-uncounted_2.c: Likewise.
+ * gcc.dg/vect/vect-uncounted_3.c: Likewise.
+ * gcc.dg/vect/vect-uncounted_4.c: Likewise.
+ * gcc.dg/vect/vect-uncounted_5.c: Likewise.
+ * gcc.dg/vect/vect-uncounted_6.c: Likewise.
+ * gcc.dg/vect/vect-uncounted_7.c: Likewise.
+ * gcc.dg/vect/vect-uncounted-run_1.c: Likewise.
+ * gcc.dg/vect/vect-uncounted-run_2.c: Likewise.
+ * gcc.dg/vect/vect-uncounted-run_3.c: Likewise.
+ * gcc.dg/vect/vect-uncounted-prolog-peel_1.c: Likewise.
+
+2025-12-15 Tamar Christina <tamar.christina@arm.com>
+
+ PR tree-optimization/123032
+ * gcc.dg/vect/pr123032.c: New test.
+
+2025-12-15 Tamar Christina <tamar.christina@arm.com>
+
+ PR tree-optimization/123043
+ * gcc.dg/vect/pr123043.c: New test.
+
+2025-12-15 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat.dg/lto30.ads, gnat.dg/lto30.adb: New test.
+
2025-12-14 Lewis Hyatt <lhyatt@gmail.com>
PR tree-optimization/106409