https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116797
Bug ID: 116797 Summary: [15 Regression] ICE on libvpx-1.14.1 on -O3: during GIMPLE pass: vect: ICE in operator[], at vec.h:910 Product: gcc Version: 15.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: middle-end Assignee: unassigned at gcc dot gnu.org Reporter: slyfox at gcc dot gnu.org Target Milestone: --- Noticed iCE on libvpx-1.14.1 on current master r15-3754-g2484ba167e1c4a gcc. Reduced example: $ cat vp9_ratectrl.c.c enum { INTER_FRAME , FRAME_TYPES} ; typedef struct { int avg_frame_qindex[FRAME_TYPES]; long buffer_level; long bits_off_target; int worst_quality; long optimal_buffer_level;} RATE_CONTROL; typedef struct { RATE_CONTROL rc;} LAYER_CONTEXT; typedef struct { LAYER_CONTEXT layer_context[];} SVC ; int vp9_encodedframe_overshoot_q, vp9_encodedframe_overshoot_tl; SVC vp9_encodedframe_overshoot_svc; void vp9_encodedframe_overshoot() { for (; vp9_encodedframe_overshoot_tl ; ++vp9_encodedframe_overshoot_tl) { LAYER_CONTEXT *lc = &vp9_encodedframe_overshoot_svc.layer_context[vp9_encodedframe_overshoot_tl]; RATE_CONTROL *lrc = &lc->rc; lrc->avg_frame_qindex[INTER_FRAME] = vp9_encodedframe_overshoot_q; lrc->buffer_level = lrc->bits_off_target = lrc->optimal_buffer_level; } } Crashing: gcc/xg++ -Bgcc -O3 -c vp9_ratectrl.c.c during GIMPLE pass: vect vp9_ratectrl.c.c: In function ‘void vp9_encodedframe_overshoot()’: vp9_ratectrl.c.c:11:34: internal compiler error: in operator[], at vec.h:910 11 | void vp9_encodedframe_overshoot() { for (; vp9_encodedframe_overshoot_tl ; ++vp9_encodedframe_overshoot_tl) { LAYER_CONTEXT *lc = &vp9_encodedframe_overshoot_svc.layer_context[vp9_encodedframe_overshoot_tl]; RATE_CONTROL *lrc = &lc->rc; lrc->avg_frame_qindex[INTER_FRAME] = vp9_encodedframe_overshoot_q; lrc->buffer_level = lrc->bits_off_target = lrc->optimal_buffer_level; } } | ^~~~~~~~~~~~~~~~~~~~~~~~~~ 0x27a937f diagnostic_context::diagnostic_impl(rich_location*, diagnostic_metadata const*, diagnostic_option_id, char const*, __va_list_tag (*) [1], diagnostic_t) ???:0 0x27b85b1 internal_error(char const*, ...) ???:0 0x27a7506 fancy_abort(char const*, int, char const*) ???:0 0x15bc0f4 vect_transform_slp_perm_load_1(vec_info*, _slp_tree*, vec<unsigned int, va_heap, vl_ptr>&, vec<tree_node*, va_heap, vl_ptr> const&, gimple_stmt_iterator*, poly_int<1u, unsigned long>, bool, bool, unsigned int*, unsigned int*, bool) ???:0 0x15bc6c6 vect_transform_slp_perm_load(vec_info*, _slp_tree*, vec<tree_node*, va_heap, vl_ptr> const&, gimple_stmt_iterator*, poly_int<1u, unsigned long>, bool, unsigned int*, unsigned int*, bool) ???:0 0x155e89a vectorizable_load(vec_info*, _stmt_vec_info*, gimple_stmt_iterator*, gimple**, _slp_tree*, vec<stmt_info_for_cost, va_heap, vl_ptr>*) ???:0 0x156ef33 vect_transform_stmt(vec_info*, _stmt_vec_info*, gimple_stmt_iterator*, _slp_tree*, _slp_instance*) ???:0 0x15c2cdb vect_schedule_slp_node(vec_info*, _slp_tree*, _slp_instance*) ???:0 0x15d9847 vect_schedule_scc(vec_info*, _slp_tree*, _slp_instance*, hash_map<_slp_tree*, slp_scc_info, simple_hashmap_traits<default_hash_traits<_slp_tree*>, slp_scc_info> >&, int&, vec<_slp_tree*, va_heap, vl_ptr>&) ???:0 0x15d9605 vect_schedule_scc(vec_info*, _slp_tree*, _slp_instance*, hash_map<_slp_tree*, slp_scc_info, simple_hashmap_traits<default_hash_traits<_slp_tree*>, slp_scc_info> >&, int&, vec<_slp_tree*, va_heap, vl_ptr>&) ???:0 0x15d9d03 vect_schedule_slp(vec_info*, vec<_slp_instance*, va_heap, vl_ptr> const&) ???:0 0x159dc13 vect_transform_loop(_loop_vec_info*, gimple*) ???:0 0x15ece4d vect_transform_loops(hash_table<simduid_to_vf, false, xcallocator>*&, loop*, gimple*, function*) ???:0 0x15ed474 try_vectorize_loop(hash_table<simduid_to_vf, false, xcallocator>*&, unsigned int*, loop*, function*) ???:0 0x15ed73a (anonymous namespace)::pass_vectorize::execute(function*) ???:0 Please submit a full bug report, with preprocessed source (by using -freport-bug). Please include the complete backtrace with any bug report. See <https://gcc.gnu.org/bugs/> for instructions. Compiler details: $ gcc/xg++ -Bgcc -v Reading specs from gcc/specs COLLECT_GCC=gcc/xg++ COLLECT_LTO_WRAPPER=gcc/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: /home/slyfox/dev/git/gcc/configure --disable-multilib --disable-bootstrap --disable-lto --disable-libsanitizer --disable-libstdcxx-pch --enable-languages=c,c++ --disable-libgomp --disable-libquadmath --disable-libvtv CFLAGS='-O1 -g0' CXXFLAGS='-O1 -g0' LDFLAGS='-O1 -g0' Thread model: posix Supported LTO compression algorithms: zlib gcc version 15.0.0 20240921 (experimental) (GCC)