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

Reply via email to