|
| 1 | +2025-12-15 Martin Jambor < [email protected]> |
| 2 | + |
| 3 | + PR ipa/107666 |
| 4 | + * common.opt (fspeculatively-call-stored-functions): New. |
| 5 | + * cgraph.h (cgraph_simple_indirect_info): New fields rec_type and |
| 6 | + fld_offset. |
| 7 | + * ipa-prop.h (ipa_analyze_var_static_initializer): Declare. |
| 8 | + (ipa_dump_noted_record_fnptrs): Likewise. |
| 9 | + (ipa_debug_noted_record_fnptrs): Likewise. |
| 10 | + (ipa_single_noted_fnptr_in_record): Likewise. |
| 11 | + (ipa_free_noted_fnptr_calls): Likewise. |
| 12 | + * ipa-cp.cc (ipcp_generate_summary): Call |
| 13 | + ipa_analyze_var_static_initializer on each varbool node with a static |
| 14 | + initializer. |
| 15 | + * ipa-devirt.cc (struct devirt_stats): New type. |
| 16 | + (devirt_target_ok_p): New function. |
| 17 | + (ipa_devirt): Move statistics counters to the new structure. dump |
| 18 | + noted function pointers stored in records. Check for edge hotness |
| 19 | + first and for odr_types only for polymorphic edges. Moved a number of |
| 20 | + checks to devirt_target_ok_p. Also add speculative direct calls for |
| 21 | + non-polymorphic indirect ones when ipa_single_noted_fnptr_in_record |
| 22 | + finds a likely target. Call ipa_free_noted_fnptr_calls. |
| 23 | + (pass_ipa_devirt::gate): Also check the new flag. |
| 24 | + * ipa-prop.cc (noted_fnptr_store): New type. |
| 25 | + (struct noted_fnptr_hasher): Likewise. |
| 26 | + (noted_fnptr_hasher::hash): New function. |
| 27 | + (noted_fnptr_hasher::equal): Likewise. |
| 28 | + (noted_fnptrs_in_records): New. |
| 29 | + (is_func_ptr_from_record): New function. |
| 30 | + (ipa_analyze_indirect_call_uses): Also simple create indirect info |
| 31 | + structures with fnptr_loaded_from_record set. |
| 32 | + (note_fnptr_in_record): New function. |
| 33 | + (ipa_dump_noted_record_fnptrs): Likewise. |
| 34 | + (ipa_debug_noted_record_fnptrs): Likewise. |
| 35 | + (ipa_single_noted_fnptr_in_record): Likewise. |
| 36 | + (ipa_free_noted_fnptr_calls): Likewise. |
| 37 | + (ipa_analyze_stmt_uses): Also look for stroes of function pointers to |
| 38 | + record structures. |
| 39 | + (ipa_analyze_var_static_initializer): New function. |
| 40 | + (ipa_write_indirect_edge_info): Also stream fnptr_loaded_from_record |
| 41 | + indirec infos. |
| 42 | + (ipa_read_indirect_edge_info): Likewise. |
| 43 | + (ipa_prop_write_jump_functions): Also stream the contents of |
| 44 | + noted_fnptrs_in_records. |
| 45 | + (ipa_prop_read_section): Likewise. |
| 46 | + * opts.cc (default_options_table): Also turn on |
| 47 | + OPT_fspeculatively_call_stored_functions at -O2. |
| 48 | + (common_handle_option): Turn flag_speculatively_call_stored_functions |
| 49 | + when using profile feedback. |
| 50 | + * doc/invoke.texi (-fspeculatively-call-stored-functions): New. |
| 51 | + |
| 52 | +2025-12-15 Martin Jambor < [email protected]> |
| 53 | + |
| 54 | + * cgraph.h (cgraph_node): Adjust the comment of member function |
| 55 | + create_indirect_edge. |
| 56 | + (enum cgraph_indirect_info_kind): New. |
| 57 | + (cgraph_indirect_call_info): Convert into a base class. |
| 58 | + (cgraph_simple_indirect_info): New. |
| 59 | + (cgraph_polymorphic_indirect_info): Likewise. |
| 60 | + (usable_polymorphic_info_p): Likewise. |
| 61 | + (is_a_helper <cgraph_simple_indirect_info *>::test): Likewise. |
| 62 | + (is_a_helper <cgraph_polymorphic_indirect_info *>::test): Likewise. |
| 63 | + (cgraph_allocate_init_indirect_info): Remove declaration. |
| 64 | + (ipa_polymorphic_call_context::ipa_polymorphic_call_context): Use the |
| 65 | + appropriate derived type of indirect info. |
| 66 | + * cgraph.cc (cgraph_allocate_init_indirect_info): Removed. |
| 67 | + (cgraph_node::create_indirect_edge): Create an appropriate type of |
| 68 | + indirect_info. |
| 69 | + (cgraph_node::dump): Dump indirect info using its dump function. |
| 70 | + (cgraph_indirect_call_info::dump): New function. |
| 71 | + (cgraph_indirect_call_info::debug): Likewise. |
| 72 | + * cgraphclones.cc (cgraph_edge::clone): Create an appropriate type of |
| 73 | + indirect_info. |
| 74 | + * cgraphunit.cc (analyze_functions): Use the appropriate derived type |
| 75 | + of indirect info. |
| 76 | + * ipa-cp.cc (initialize_node_lattices): Adjust the check for |
| 77 | + polymorphic indirect info. |
| 78 | + (ipa_get_indirect_edge_target_1): Use the appropriate derived types of |
| 79 | + indirect info. |
| 80 | + (ipcp_discover_new_direct_edges): Likewise. |
| 81 | + * ipa-devirt.cc (ipa_devirt): Use the polymorphis derived type of |
| 82 | + indirect info and check that it is usable. |
| 83 | + * ipa-inline.cc (dump_inline_stats): Adjust the check for polymorphic |
| 84 | + indirect info. |
| 85 | + * ipa-profile.cc (ipa_profile): Likewise and check usability. |
| 86 | + * ipa-prop.cc (ipa_print_node_jump_functions): Dump indirect info |
| 87 | + using its dumping member function. |
| 88 | + (ipa_note_param_call): Removed. |
| 89 | + (ipa_analyze_indirect_call_uses): Use the appropriate derived type of |
| 90 | + indirect info, set all fields of indirect info separately rather than |
| 91 | + relying on ipa_note_param_call. |
| 92 | + (ipa_analyze_virtual_call_uses): Use the polymorphis derived type of |
| 93 | + indirect info and check that it is usable, set all fields of indirect |
| 94 | + info separately rather than relying on ipa_note_param_call. |
| 95 | + (ipa_analyze_call_uses): Use the appropriate derived type of indirect |
| 96 | + info. |
| 97 | + (ipa_make_edge_direct_to_target): Use the appropriate derived type of |
| 98 | + indirect info. Remove wrong note that member_ptr check was not |
| 99 | + needed. Adjust check for polymorphic call when dumping. |
| 100 | + (try_make_edge_direct_simple_call): Use the appropriate derived type |
| 101 | + of indirect info. |
| 102 | + (try_make_edge_direct_virtual_call): Use the polymorphis derived type |
| 103 | + of indirect info and check that it is usable. |
| 104 | + (update_indirect_edges_after_inlining): Use the appropriate derived |
| 105 | + type of indirect info. Define local variables only before their first |
| 106 | + use. |
| 107 | + (ipa_write_indirect_edge_info): Also stream indirect info kind. Use |
| 108 | + the appropriate derived type of indirect info. |
| 109 | + (ipa_read_indirect_edge_info): Check that the streamed in indirect |
| 110 | + info kind matches rthe structure at hand. Use the appropriate derived |
| 111 | + type of indirect info. |
| 112 | + * ipa-utils.h (possible_polymorphic_call_targets): Use the |
| 113 | + polymorphis derived type of indirect info. Assert it is usable. |
| 114 | + (dump_possible_polymorphic_call_targets): Use the polymorphis |
| 115 | + derived type of indirect info and check it is usable. |
| 116 | + (possible_polymorphic_call_target_p): Likewise. |
| 117 | + * ipa.cc (symbol_table::remove_unreachable_nodes): Use |
| 118 | + usable_polymorphic_info_p. |
| 119 | + * lto-cgraph.cc (lto_output_edge): Stream indirect info kind. |
| 120 | + (compute_ltrans_boundary): Use usable_polymorphic_info_p. |
| 121 | + (input_edge): Move definition of ecf_flags before its first use. |
| 122 | + Pass true as the last parameter to create_indirect_edge. Stream |
| 123 | + indirect info kind and create a corresponding type to hold the |
| 124 | + information. |
| 125 | + * trans-mem.cc (ipa_tm_insert_gettmclone_call): Use the |
| 126 | + polymorphis derived type of indirect info. |
| 127 | + |
| 128 | +2025-12-15 Martin Jambor < [email protected]> |
| 129 | + |
| 130 | + * gengtype.cc (walk_subclasses): Avoid generating code with unused |
| 131 | + variables. |
| 132 | + |
| 133 | +2025-12-15 Pengxuan Zheng < [email protected]> |
| 134 | + |
| 135 | + PR tree-optimization/122987 |
| 136 | + * tree-ssa-ifcombine.cc (ifcombine_ifandif): Replace |
| 137 | + force_gimple_operand_gsi with gimple_build. |
| 138 | + |
| 139 | +2025-12-15 Joseph Myers < [email protected]> |
| 140 | + |
| 141 | + * Makefile.in (PLUGIN_HEADERS): Add $(srcdir)/text-art/*.h. |
| 142 | + (install-plugin): Preserve directory structure for text-art |
| 143 | + headers. |
| 144 | + |
| 145 | +2025-12-15 Alfie Richards < [email protected]> |
| 146 | + |
| 147 | + * config/aarch64/aarch64-cores.def (cortex-a320): New core. |
| 148 | + * config/aarch64/aarch64-tune.md: Regenerate. |
| 149 | + |
| 150 | +2025-12-15 Victor Do Nascimento < [email protected]> |
| 151 | + |
| 152 | + * tree-vect-loop.cc (vect_analyze_loop_form): Relax niters |
| 153 | + condition. |
| 154 | + |
| 155 | +2025-12-15 Victor Do Nascimento < [email protected]> |
| 156 | + |
| 157 | + * tree-vect-data-refs.cc (vect_enhance_data_refs_alignment): |
| 158 | + Enable peeling for uncounted loops. |
| 159 | + * tree-vect-loop-manip.cc |
| 160 | + (slpeel_tree_duplicate_loop_to_edge_cfg): Add exit condition |
| 161 | + duplication functionality. |
| 162 | + * tree-vectorizer.h (slpeel_tree_duplicate_loop_to_edge_cfg): |
| 163 | + Modify function signature. |
| 164 | + (vect_do_peeling): Enable uncounted loop peeling. |
| 165 | + |
| 166 | +2025-12-15 Victor Do Nascimento < [email protected]> |
| 167 | + |
| 168 | + * tree-vect-data-refs.cc (vect_prune_runtime_alias_test_list): |
| 169 | + Reject when !operand_equal_p for any data ref pair. |
| 170 | + |
| 171 | +2025-12-15 Victor Do Nascimento < [email protected]> |
| 172 | + |
| 173 | + * tree-vect-loop.cc (vect_analyze_loop_2): Disable partial |
| 174 | + vector use for uncounted loops. |
| 175 | + |
| 176 | +2025-12-15 Victor Do Nascimento < [email protected]> |
| 177 | + |
| 178 | + * tree-vect-loop-manip.cc (slpeel_tree_duplicate_loop_to_edge_cfg): |
| 179 | + reset IVs and accumulators for all exits for uncounted loops. |
| 180 | + * tree-vectorizer.h (slpeel_tree_duplicate_loop_to_edge_cfg): |
| 181 | + add boolean `uncounted_p' argument. |
| 182 | + |
| 183 | +2025-12-15 Victor Do Nascimento < [email protected]> |
| 184 | + |
| 185 | + * tree-vect-loop-manip.cc (vect_do_peeling): Disable vector |
| 186 | + loop skip checking. |
| 187 | + (vect_loop_versioning): skip profitability check for uncounted loops. |
| 188 | + |
| 189 | +2025-12-15 Victor Do Nascimento < [email protected]> |
| 190 | + |
| 191 | + * tree-vect-loop-manip.cc (vect_do_peeling): Disable niters |
| 192 | + update. |
| 193 | + * tree-vect-loop.cc (vect_transform_loop): Likewise. |
| 194 | + |
| 195 | +2025-12-15 Victor Do Nascimento < [email protected]> |
| 196 | + |
| 197 | + * tree-vectorizer.h (LOOP_VINFO_IV_EXIT): Replace this... |
| 198 | + (LOOP_VINFO_MAIN_EXIT): ...with this. |
| 199 | + (LOOP_VINFO_EPILOGUE_IV_EXIT): Replace this... |
| 200 | + (LOOP_VINFO_EPILOGUE_MAIN_EXIT): ...with this. |
| 201 | + (LOOP_VINFO_SCALAR_IV_EXIT): Replace this... |
| 202 | + (LOOP_VINFO_SCALAR_MAIN_EXIT): ...with this. |
| 203 | + (class _loop_vec_info): s/iv/main for `vec_loop_iv_exit', |
| 204 | + `vec_epilogue_loop_main_exit' and `scalar_loop_main_exit' |
| 205 | + class members. |
| 206 | + * tree-vect-data-refs.cc |
| 207 | + (vect_enhance_data_refs_alignment): |
| 208 | + s/LOOP_VINFO_IV_EXIT/LOOP_VINFO_MAIN_EXIT/. |
| 209 | + * tree-vect-loop-manip.cc |
| 210 | + (vect_set_loop_controls_directly): Likewise. |
| 211 | + (vect_gen_vector_loop_niters_mult_vf): Likewise. |
| 212 | + (vect_loop_versioning): Likewise. |
| 213 | + (vect_do_peeling): |
| 214 | + s/LOOP_VINFO_IV_EXIT/LOOP_VINFO_MAIN_EXIT/, |
| 215 | + s/LOOP_VINFO_SCALAR_IV_EXIT/LOOP_VINFO_SCALAR_MAIN_EXIT, |
| 216 | + s/LOOP_VINFO_EPILOGUE_IV_EXIT/LOOP_VINFO_EPILOGUE_MAIN_EXIT. |
| 217 | + * tree-vect-loop.cc (_loop_vec_info::_loop_vec_info): |
| 218 | + s/iv_exit/main_exit/ in initializer list. |
| 219 | + (vec_init_loop_exit_info): Handle multiple-exit uncounted loops. |
| 220 | + (vect_analyze_loop_form): Fix `failure_at' message. |
| 221 | + (vect_create_loop_vinfo): |
| 222 | + s/LOOP_VINFO_IV_EXIT/LOOP_VINFO_MAIN_EXIT/. |
| 223 | + (vect_create_epilog_for_reduction): Likewise. |
| 224 | + (vectorizable_live_operation): Likewise. |
| 225 | + (vect_update_ivs_after_vectorizer_for_early_breaks): Likewise. |
| 226 | + (vect_transform_loop): |
| 227 | + s/LOOP_VINFO_IV_EXIT/LOOP_VINFO_MAIN_EXIT/, |
| 228 | + s/LOOP_VINFO_SCALAR_IV_EXIT/LOOP_VINFO_SCALAR_MAIN_EXIT. |
| 229 | + * tree-vectorizer.cc (set_uid_loop_bbs): |
| 230 | + s/LOOP_VINFO_SCALAR_IV_EXIT/LOOP_VINFO_SCALAR_MAIN_EXIT. |
| 231 | + |
| 232 | +2025-12-15 Victor Do Nascimento < [email protected]> |
| 233 | + |
| 234 | + * tree-vectorizer.h (LOOP_VINFO_EARLY_BREAKS_VECT_PEELED): OR |
| 235 | + its current definition with `LOOP_VINFO_NITERS_UNCOUNTED_P(L)' |
| 236 | + * tree-vect-loop.cc (vect_create_loop_vinfo): Don't populate |
| 237 | + `LOOP_VINFO_LOOP_IV_COND' for uncounted loops. |
| 238 | + |
| 239 | +2025-12-15 Victor Do Nascimento < [email protected]> |
| 240 | + |
| 241 | + * tree-vect-loop-manip.cc (vect_build_loop_niters): Gracefully |
| 242 | + handle uncounted loops. |
| 243 | + (vect_gen_prolog_loop_niters): Add type default of `sizetype'. |
| 244 | + (vect_gen_vector_loop_niters): Likewise. |
| 245 | + (vect_do_peeling): Likewise. |
| 246 | + * tree-vect-loop.cc (vect_min_prec_for_max_niters): Likewise. |
| 247 | + (loop_niters_no_overflow): Likewise. |
| 248 | + * tree-vectorizer.h (LOOP_VINFO_NITERS_UNCOUNTED_P): New. |
| 249 | + |
| 250 | +2025-12-15 Peter Damianov < [email protected]> |
| 251 | + |
| 252 | + PR target/108866 |
| 253 | + * doc/install.texi: Document --with-windres configure option. |
| 254 | + |
| 255 | +2025-12-15 Peter Damianov < [email protected]> |
| 256 | + |
| 257 | + PR target/108866 |
| 258 | + * gcc.cc (find_a_program): Add check for DEFAULT_WINDRES. |
| 259 | + * configure.ac: Add --with-windres= option. |
| 260 | + * config.in: Regenerate. |
| 261 | + * configure: Regenerate. |
| 262 | + |
| 263 | +2025-12-15 Peter Damianov < [email protected]> |
| 264 | + |
| 265 | + PR driver/108866 |
| 266 | + * gcc.cc (default_compilers): Add EXTRA_DEFAULT_COMPILERS so the config |
| 267 | + of a target can add an extra compiler spec to default_compilers. |
| 268 | + * config/i386/cygming.h (WINDRES_FORMAT_SPEC): New macro to handle |
| 269 | + PE format selection based on TARGET_64BIT_DEFAULT and -m32/-m64 flags. |
| 270 | + (EXTRA_DEFAULT_COMPILERS): Add spec for windres. |
| 271 | + * config/aarch64/cygming.h (EXTRA_DEFAULT_COMPILERS): Likewise. |
| 272 | + |
| 273 | +2025-12-15 Jerry Zhang Jian < [email protected]> |
| 274 | + |
| 275 | + * config/riscv/gen-riscv-ext-opt.cc: Rename UPPERCAE_NAME to |
| 276 | + UPPERCASE_NAME. |
| 277 | + * config/riscv/gen-riscv-ext-texi.cc: Likewise. |
| 278 | + * config/riscv/riscv-ext-corev.def: Likewise. |
| 279 | + * config/riscv/riscv-ext-sifive.def: Likewise. |
| 280 | + * config/riscv/riscv-ext-thead.def: Likewise. |
| 281 | + * config/riscv/riscv-ext-ventana.def: Likewise. |
| 282 | + |
1 | 283 | 2025-12-14 Lewis Hyatt < [email protected]> |
2 | 284 |
|
3 | 285 | PR tree-optimization/106409 |
|
0 commit comments