https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103744
Bug ID: 103744 Summary: [12 Regression] ICE in operator[], at vec.h:889 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: asolokha at gmx dot com Target Milestone: --- Target: aarch64-linux-gnu gcc 12.0.0 alpha20211212 snapshot (g:0b52083ea2c2dd9897031fdc3802a68fd4aa45ef) ICEs when compiling the following testcase w/ -mcpu=a64fx -O2: int r; void foo (short int *s, short int *d1, short int *d2, int z) { int *a; while (z < 1) { int i; i = *s++ - (*d1++ + *d2++); r += a[i]; i = *s++ - (*d1++ + *d2++); r += a[i]; ++z; } } % aarch64-linux-gnu-gcc-12.0.0 -mcpu=a64fx -O2 -c utkqjrc1.c during GIMPLE pass: vect utkqjrc1.c: In function 'foo': utkqjrc1.c:4:1: internal compiler error: in operator[], at vec.h:889 4 | foo (short int *s, short int *d1, short int *d2, int z) | ^~~ 0x7e1dee vec<edge_def*, va_gc, vl_embed>::operator[](unsigned int) /var/tmp/portage/cross-aarch64-linux-gnu/gcc-12.0.0_p20211212/work/gcc-12-20211212/gcc/vec.h:889 0x7e23c2 vec<gimple*, va_heap, vl_embed>::operator[](unsigned int) /var/tmp/portage/cross-aarch64-linux-gnu/gcc-12.0.0_p20211212/work/gcc-12-20211212/gcc/tree-vect-slp.c:6485 0x7e23c2 vec<gimple*, va_heap, vl_ptr>::operator[](unsigned int) /var/tmp/portage/cross-aarch64-linux-gnu/gcc-12.0.0_p20211212/work/gcc-12-20211212/gcc/vec.h:1495 0x7e23c2 vect_get_slp_vect_def(_slp_tree*, unsigned int) /var/tmp/portage/cross-aarch64-linux-gnu/gcc-12.0.0_p20211212/work/gcc-12-20211212/gcc/tree-vect-slp.c:6482 0x11e0d12 vect_create_epilog_for_reduction /var/tmp/portage/cross-aarch64-linux-gnu/gcc-12.0.0_p20211212/work/gcc-12-20211212/gcc/tree-vect-loop.c:5325 0x11e0d12 vectorizable_live_operation(vec_info*, _stmt_vec_info*, gimple_stmt_iterator*, _slp_tree*, _slp_instance*, int, bool, vec<stmt_info_for_cost, va_heap, vl_ptr>*) /var/tmp/portage/cross-aarch64-linux-gnu/gcc-12.0.0_p20211212/work/gcc-12-20211212/gcc/tree-vect-loop.c:8639 0x1c75e67 can_vectorize_live_stmts /var/tmp/portage/cross-aarch64-linux-gnu/gcc-12.0.0_p20211212/work/gcc-12-20211212/gcc/tree-vect-stmts.c:10899 0x1ca046a vect_transform_stmt(vec_info*, _stmt_vec_info*, gimple_stmt_iterator*, _slp_tree*, _slp_instance*) /var/tmp/portage/cross-aarch64-linux-gnu/gcc-12.0.0_p20211212/work/gcc-12-20211212/gcc/tree-vect-stmts.c:11291 0x11fe90a vect_schedule_slp_node /var/tmp/portage/cross-aarch64-linux-gnu/gcc-12.0.0_p20211212/work/gcc-12-20211212/gcc/tree-vect-slp.c:7270 0x1210e74 vect_schedule_scc /var/tmp/portage/cross-aarch64-linux-gnu/gcc-12.0.0_p20211212/work/gcc-12-20211212/gcc/tree-vect-slp.c:7514 0x1211eef vect_schedule_slp(vec_info*, vec<_slp_instance*, va_heap, vl_ptr> const&) /var/tmp/portage/cross-aarch64-linux-gnu/gcc-12.0.0_p20211212/work/gcc-12-20211212/gcc/tree-vect-slp.c:7579 0x11ea999 vect_transform_loop(_loop_vec_info*, gimple*) /var/tmp/portage/cross-aarch64-linux-gnu/gcc-12.0.0_p20211212/work/gcc-12-20211212/gcc/tree-vect-loop.c:9625 0x121e6c7 vect_transform_loops /var/tmp/portage/cross-aarch64-linux-gnu/gcc-12.0.0_p20211212/work/gcc-12-20211212/gcc/tree-vectorizer.c:1003 0x121e6c7 try_vectorize_loop_1 /var/tmp/portage/cross-aarch64-linux-gnu/gcc-12.0.0_p20211212/work/gcc-12-20211212/gcc/tree-vectorizer.c:1133 0x121e6c7 try_vectorize_loop /var/tmp/portage/cross-aarch64-linux-gnu/gcc-12.0.0_p20211212/work/gcc-12-20211212/gcc/tree-vectorizer.c:1162 0x121ef74 execute /var/tmp/portage/cross-aarch64-linux-gnu/gcc-12.0.0_p20211212/work/gcc-12-20211212/gcc/tree-vectorizer.c:1278