https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93780
--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> --- v = { 0.0, 0.0, 0.0, 0.0 }; MEM <unsigned char[12]> [(char * {ref-all})&v] = MEM <unsigned char[12]> [(char * {ref-all})&init]; _1 = BIT_FIELD_REF <v, 32, 0>; The check there needs to check if the the nelts is a power of 2. Which is what SET_TYPE_VECTOR_SUBPARTS is doing: unsigned HOST_WIDE_INT coeff0 = subparts.coeffs[0]; int index = exact_log2 (coeff0); gcc_assert (index >= 0); Note it is a bit complex for the case of NUM_POLY_INT_COEFFS == 2 which happens currently only on aarch64.