https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102142
Bug ID: 102142 Summary: [12 Regression] ICE Segmentation fault since r12-3222-g89f33f44addbf985 Product: gcc Version: 12.0 Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: marxin at gcc dot gnu.org CC: rguenth at gcc dot gnu.org Target Milestone: --- The following fails: $ cat func.ii extern short arr_597[]; extern bool arr_601[]; int test_var_13; void test(short arr_391[][9][2][2]) { for (int i_60 = 0; i_60 < 11; i_60 += test_var_13) arr_597[22] = arr_601[i_60] = arr_391[0][0][1][4]; } $ g++ func.ii -c -O3 during GIMPLE pass: slp func.ii: In function ‘void test(short int (*)[9][2][2])’: func.ii:4:6: internal compiler error: Segmentation fault 4 | void test(short arr_391[][9][2][2]) { | ^~~~ 0x113d40f crash_signal ../../gcc/toplev.c:328 0x13f123c vec<std::pair<unsigned int, stmt_info_for_cost*>, va_heap, vl_embed>::operator[](unsigned int) ../../gcc/vec.h:889 0x13f123c vec<std::pair<unsigned int, stmt_info_for_cost*>, va_heap, vl_ptr>::operator[](unsigned int) ../../gcc/vec.h:1495 0x13f123c vect_bb_vectorization_profitable_p ../../gcc/tree-vect-slp.c:5302 0x13f889c vect_slp_region ../../gcc/tree-vect-slp.c:5869 0x13f9984 vect_slp_bbs ../../gcc/tree-vect-slp.c:6040 0x13f9d4c vect_slp_function(function*) ../../gcc/tree-vect-slp.c:6128 0x1400342 execute ../../gcc/tree-vectorizer.c:1454 Valgrind reports: ==120817== Invalid read of size 4 ==120817== at 0x13F123C: operator[] (vec.h:889) ==120817== by 0x13F123C: operator[] (vec.h:1495) ==120817== by 0x13F123C: vect_bb_vectorization_profitable_p(_bb_vec_info*, vec<_slp_instance*, va_heap, vl_ptr>, loop*) (tree-vect-slp.c:5302) ==120817== by 0x13F889C: vect_slp_region(vec<basic_block_def*, va_heap, vl_ptr>, vec<data_reference*, va_heap, vl_ptr>, vec<int, va_heap, vl_ptr>*, unsigned int, loop*) (tree-vect-slp.c:5869) ==120817== by 0x13F9984: vect_slp_bbs(vec<basic_block_def*, va_heap, vl_ptr> const&, loop*) (tree-vect-slp.c:6040) ==120817== by 0x13F9D4C: vect_slp_function(function*) (tree-vect-slp.c:6128) ==120817== by 0x1400342: (anonymous namespace)::pass_slp_vectorize::execute(function*) (tree-vectorizer.c:1454) ==120817== by 0x106020C: execute_one_pass(opt_pass*) (passes.c:2567) ==120817== by 0x1060A9F: execute_pass_list_1(opt_pass*) (passes.c:2656) ==120817== by 0x1060AB1: execute_pass_list_1(opt_pass*) (passes.c:2657) ==120817== by 0x1060AB1: execute_pass_list_1(opt_pass*) (passes.c:2657) ==120817== by 0x1060AD8: execute_pass_list(function*, opt_pass*) (passes.c:2667) ==120817== by 0xCD3435: expand (cgraphunit.c:1828) ==120817== by 0xCD3435: cgraph_node::expand() (cgraphunit.c:1781) ==120817== by 0xCD499F: expand_all_functions (cgraphunit.c:1992) ==120817== by 0xCD499F: symbol_table::compile() [clone .part.0] (cgraphunit.c:2356) ==120817== Address 0x4 is not stack'd, malloc'd or (recently) free'd