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.