https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98428
--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> --- The ICE is during GIMPLE pass: vect x.c: In function 'l': x.c:16:6: internal compiler error: in as_a, at is-a.h:242 16 | void l() { | ^ 0x18fb0a7 _bb_vec_info* as_a<_bb_vec_info*, vec_info>(vec_info*) /home/rguenther/src/gcc2/gcc/is-a.h:242 0x18f69de vect_schedule_slp_node /home/rguenther/src/gcc2/gcc/tree-vect-slp.c:6230 0x18f74a3 vect_schedule_scc /home/rguenther/src/gcc2/gcc/tree-vect-slp.c:6436 0x18f737a vect_schedule_scc /home/rguenther/src/gcc2/gcc/tree-vect-slp.c:6417 0x18f7b3e vect_schedule_slp(vec_info*, vec<_slp_instance*, va_heap, vl_ptr>) /home/rguenther/src/gcc2/gcc/tree-vect-slp.c:6552 with (gdb) p debug (child) x.c:16:6: note: node (external) 0x3afccc0 (max_nunits=1, refcnt=1) x.c:16:6: note: { } being a pre-existing vector. We pick this up unexpectedly for loop vectorization since we failed to hoist the invariant lane extract _22 = BIT_FIELD_REF <j.0_1, 32, 32>; out of the loop. It wasn't supposed to be supported for loop vect.