https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98550
Andreas Krebbel <krebbel at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|WAITING |NEW --- Comment #5 from Andreas Krebbel <krebbel at gcc dot gnu.org> --- With the patch the sign extension of 6 shift count operands from int to long int is now marked as vect_external_def. This makes the vectype field in the slp node to be bumped from "vector 2 int" to a "vector 4 int" in: vectorizable_conversion->vect_maybe_update_slp_op_vectype This then triggers the ICE when trying to divide vf*group_size (which is 1*6 here) by the number of elements in the vector type (now 4) in vect_slp_analyze_node_operations. Is changing the vectype field of an slp node to a type with a different number of elements actually valid? slp1: bb$dh_5 = D.4123.dh; _10 = MEM[(int *)bb$dh_5]; pretmp_62 = a.cp[1]; pretmp_79 = a.cp[2]; pretmp_31 = a.cp[3]; pretmp_39 = a.cp[4]; pretmp_16 = a.cp[5]; pretmp_19 = a.cp[6]; goto <bb 5>; [100.00%] <bb 4> [local count: 1014686041]: _20 = prephitmp_78 >> _10; a.cp[1] = _20; _22 = prephitmp_80 >> _10; a.cp[2] = _22; _24 = prephitmp_32 >> _10; a.cp[3] = _24; _26 = prephitmp_40 >> _10; a.cp[4] = _26; _28 = prephitmp_17 >> _10; a.cp[5] = _28; _30 = prephitmp_11 >> _10; a.cp[6] = _30; cn ={v} {CLOBBER};