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.

Reply via email to