https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103489
Bug ID: 103489 Summary: ICE with -O3 in operator[], at vec.h:889 Product: gcc Version: 12.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vsevolod.livinskij at frtk dot ru Target Milestone: --- The same reproducer also triggers ICE for Sapphire Rapids with a different stack trace. Link to the Compiler Explorer: https://godbolt.org/z/nxqPhnnoe Reproducer: bool a[80]; short b, f; void g(short h[][8][16]) { for (bool c = 0; c < b;) for (bool d = 0; d < (bool)f; d = 1) for (short e = 0; e < 16; e++) a[e] = h[b][1][e]; } Error: >$ g++ -O3 -c func.cpp during GIMPLE pass: slp func.cpp: In function 'void g(short int (*)[8][16])': func.cpp:3:6: internal compiler error: in operator[], at vec.h:889 3 | void g(short h[][8][16]) { | ^ 0x8b7e0a vec<edge_def*, va_gc, vl_embed>::operator[](unsigned int) /testing/gcc/gcc_src_master/gcc/vec.h:889 0x8b896f vec<gphi*, va_heap, vl_embed>::operator[](unsigned int) /testing/gcc/gcc_src_master/gcc/tree-vect-loop.c:7877 0x8b896f vec<gphi*, va_heap, vl_ptr>::operator[](unsigned int) /testing/gcc/gcc_src_master/gcc/vec.h:1495 0x8b896f vectorizable_phi(vec_info*, _stmt_vec_info*, gimple**, _slp_tree*, vec<stmt_info_for_cost, va_heap, vl_ptr>*) /testing/gcc/gcc_src_master/gcc/tree-vect-loop.c:7869 0x2093485 vect_transform_stmt(vec_info*, _stmt_vec_info*, gimple_stmt_iterator*, _slp_tree*, _slp_instance*) /testing/gcc/gcc_src_master/gcc/tree-vect-stmts.c:11174 0x1485797 vect_schedule_slp_node /testing/gcc/gcc_src_master/gcc/tree-vect-slp.c:7252 0x1496756 vect_schedule_scc /testing/gcc/gcc_src_master/gcc/tree-vect-slp.c:7450 0x14964e9 vect_schedule_scc /testing/gcc/gcc_src_master/gcc/tree-vect-slp.c:7431 0x14964e9 vect_schedule_scc /testing/gcc/gcc_src_master/gcc/tree-vect-slp.c:7431 0x1496daf vect_schedule_slp(vec_info*, vec<_slp_instance*, va_heap, vl_ptr> const&) /testing/gcc/gcc_src_master/gcc/tree-vect-slp.c:7567 0x1498573 vect_slp_region /testing/gcc/gcc_src_master/gcc/tree-vect-slp.c:5926 0x1499503 vect_slp_bbs /testing/gcc/gcc_src_master/gcc/tree-vect-slp.c:6038 0x14998fc vect_slp_function(function*) /testing/gcc/gcc_src_master/gcc/tree-vect-slp.c:6126 0x14a02f2 execute /testing/gcc/gcc_src_master/gcc/tree-vectorizer.c:1503 Sapphire Rapids Error: >$ g++ -O3 -c func.cpp -march=sapphirerapids func.cpp: In function 'void g(short int (*)[8][16])': func.cpp:3:6: error: incompatible types in 'PHI' argument 1 3 | void g(short h[][8][16]) { | ^ vector(16) unsigned char vector(16) <signed-boolean:1> vect_a_I_lsm.30_92 = PHI <_97(2), mask__28.29_93(4)> during GIMPLE pass: slp func.cpp:3:6: internal compiler error: verify_gimple failed 0x123e31a verify_gimple_in_cfg(function*, bool) /testing/gcc/gcc_src_master/gcc/tree-cfg.c:5578 0x110638f execute_function_todo /testing/gcc/gcc_src_master/gcc/passes.c:2084 0x110693b execute_todo /testing/gcc/gcc_src_master/gcc/passes.c:2138 gcc version 12.0.0 20211129 (ca5667e867252db3c8642ee90f55427149cd92b6) (GCC)