https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110776
Bug ID: 110776 Summary: [14 Regression] powerpc-darwin bootstrap broken after r14-2490 with ICE rs6000.cc:5069 building libgfortran Product: gcc Version: 14.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: iains at gcc dot gnu.org Target Milestone: --- The ICE seems to be because rs6000_builtin_vectorization_cost () is called with a request for a misaligned load (which we do not support), It reproduces on a cross from x86_64. This is in compiling libgfortran generated code (so nothing Darwin-specific, other than being an Altivec platform). A philosophical question; if a request is made for the cost of doing something unsupported - should we not return "infinity" rather than ICEing? Presumably, the alternative is that the middle end needs to know that some kinds of operation are not supported and therefore not to try and cost them (speculation here; I have no knowledge of the relevant code). ===== ..../gcc/cc1 -fpreprocessed .libs/reshape_i4.i -feliminate-unused-debug-symbols -fPIC -quiet -dumpdir .libs/ -dumpbase reshape_i4.c -dumpbase-ext .c -m64 -mmacosx-version-min=10.5 -g -O2 -Wall -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition -Wextra -Wwrite-strings -Werror=implicit-function-declaration -Werror=vla -Wunknown-pragmas -std=gnu11 -std=gnu11 -version -fcx-fortran-rules -ffunction-sections -fdata-sections -fno-common -o .libs/reshape_i4.s backtrace: * frame #0: 0x0000000101d840cd cc1`internal_error(gmsgid="in %s, at %s:%d") at diagnostic.cc:2166:25 frame #1: 0x0000000101d845b3 cc1`fancy_abort(file="/src-local/gcc-master/gcc/config/rs6000/rs6000.cc", line=5069, function="rs6000_builtin_vectorization_cost") at diagnostic.cc:2296:18 frame #2: 0x0000000101accf54 cc1`::rs6000_builtin_vectorization_cost(type_of_cost=unaligned_load, vectype=0x0000000115045a80, misalign=-1) at rs6000.cc:5069:4 frame #3: 0x00000001019bb55c cc1`builtin_vectorization_cost(type_of_cost=unaligned_load, vectype=0x0000000115045a80, misalign=-1) at tree-vectorizer.h:1789:55 frame #4: 0x0000000101903b4f cc1`::record_stmt_cost(body_cost_vec=0x0000000308b11a00, count=1, kind=unaligned_load, stmt_info=0x0000000111a0e210, node=0x0000000000000000, vectype=0x0000000115045a80, misalign=-1, where=vect_body) at tree-vect-stmts.cc:113:35 frame #5: 0x0000000101903b9e cc1`record_stmt_cost(body_cost_vec=0x0000000308b11a00, count=1, kind=unaligned_load, stmt_info=0x0000000111a0e210, vectype=0x0000000115045a80, misalign=-1, where=vect_body) at tree-vect-stmts.cc:122:27 frame #6: 0x000000010197ea64 cc1`record_stmt_cost(body_cost_vec=0x0000000308b11a00, count=1, kind=unaligned_load, stmt_info=0x0000000111a0e210, misalign=-1, where=vect_body) at tree-vectorizer.h:2210:27 frame #7: 0x00000001019073f6 cc1`vect_get_load_cost((null)=0x0000000111a0d110, stmt_info=0x0000000111a0e210, ncopies=1, alignment_support_scheme=dr_unaligned_supported, misalignment=-1, add_realign_cost=false, inside_cost=0x0000000308b10ac4, prologue_cost=0x0000000000000000, prologue_cost_vec=0x0000000308b11a00, body_cost_vec=0x0000000308b11a00, record_prologue_costs=true) at tree-vect-stmts.cc:1307:35 frame #8: 0x000000010192b199 cc1`::vectorizable_load(vinfo=0x0000000111a0d110, stmt_info=0x0000000111a0e210, gsi=0x0000000000000000, vec_stmt=0x0000000000000000, slp_node=0x0000000000000000, cost_vec=0x0000000308b11a00) at tree-vect-stmts.cc:9989:26 frame #9: 0x00000001019329be cc1`vect_analyze_stmt(vinfo=0x0000000111a0d110, stmt_info=0x0000000111a0e210, need_to_vectorize=0x0000000308b11a0f, node=0x0000000000000000, node_instance=0x0000000000000000, cost_vec=0x0000000308b11a00) at tree-vect-stmts.cc:12124:25 frame #10: 0x000000010194622e cc1`::vect_analyze_loop_operations(loop_vinfo=0x0000000111a0d110) at tree-vect-loop.cc:2083:23 frame #11: 0x0000000101948c6e cc1`::vect_analyze_loop_2(loop_vinfo=0x0000000111a0d110, fatal=0x0000000308b1292f, suggested_unroll_factor=0x0000000308b1276c, slp_done_for_suggested_uf=0x0000000308b1276b) at tree-vect-loop.cc:2880:37 frame #12: 0x000000010194a49b cc1`::vect_analyze_loop_1(loop=0x0000000115007200, shared=0x0000000308b12ce0, loop_form_info=0x0000000308b129f0, main_loop_vinfo=0x0000000000000000, vector_modes=0x0000000308b129b0, mode_i=0x0000000308b1299c, autodetected_vector_mode=0x0000000308b129ac, fatal=0x0000000308b1292f) at tree-vect-loop.cc:3316:40 frame #13: 0x000000010194b036 cc1`vect_analyze_loop(loop=0x0000000115007200, shared=0x0000000308b12ce0) at tree-vect-loop.cc:3470:24 frame #14: 0x00000001019be5c5 cc1`::try_vectorize_loop_1(simduid_to_vf_htab=0x0000000308b12f30, num_vectorized_loops=0x0000000308b12f3c, loop=0x0000000115007200, loop_vectorized_call=0x00000001150e61b0, loop_dist_alias_call=0x0000000000000000, fun=0x000000011500d000) at tree-vectorizer.cc:1064:52 frame #15: 0x00000001019beb2c cc1`::try_vectorize_loop(simduid_to_vf_htab=0x0000000308b12f30, num_vectorized_loops=0x0000000308b12f3c, loop=0x0000000115007200, fun=0x000000011500d000) at tree-vectorizer.cc:1180:31 frame #16: 0x00000001019bedd0 cc1`pass_vectorize::execute(this=0x0000600002604300, fun=0x000000011500d000) const at tree-vectorizer.cc:1296:33 frame #17: 0x0000000101382584 cc1`execute_one_pass(pass=0x0000600002604300) at passes.cc:2651:30 frame #18: 0x00000001013829c3 cc1`::execute_pass_list_1(pass=0x0000600002604300) at passes.cc:2760:28 frame #19: 0x00000001013829f4 cc1`::execute_pass_list_1(pass=0x000060000260f480) at passes.cc:2761:22 frame #20: 0x00000001013829f4 cc1`::execute_pass_list_1(pass=0x000060000260e1c0) at passes.cc:2761:22 frame #21: 0x0000000101382a5a cc1`execute_pass_list(fn=0x000000011500d000, pass=0x000060000260dec0) at passes.cc:2771:23 frame #22: 0x0000000100bb0866 cc1`cgraph_node::expand(this=0x0000000113d06220) at cgraphunit.cc:1841:21 frame #23: 0x0000000100bb1107 cc1`::expand_all_functions() at cgraphunit.cc:2024:21 frame #24: 0x0000000100bb1fb2 cc1`symbol_table::compile(this=0x0000000113806000) at cgraphunit.cc:2398:24 frame #25: 0x0000000100bb24b4 cc1`symbol_table::finalize_compilation_unit(this=0x0000000113806000) at cgraphunit.cc:2583:11 frame #26: 0x0000000101552e17 cc1`::compile_file() at toplev.cc:471:41 frame #27: 0x0000000101556832 cc1`::do_compile(no_backend=false) at toplev.cc:2126:24 frame #28: 0x0000000101556d76 cc1`toplev::main(this=0x0000000308b1333a, argc=34, argv=0x0000000308b13490) at toplev.cc:2282:18 frame #29: 0x0000000101d53d18 cc1`main(argc=34, argv=0x0000000308b13490) at main.cc:39:23