Tamar Christina <tamar.christ...@arm.com> writes: >> > @@ -7976,22 +7976,30 @@ store_constructor (tree exp, rtx target, int >> > cleared, >> poly_int64 size, >> > gcc_assert (known_eq (CONSTRUCTOR_NELTS (exp) >> > * TYPE_VECTOR_SUBPARTS (etype), >> > n_elts)); >> > + >> > emode = TYPE_MODE (etype); >> > vector_typed_elts_p = true; >> > + nunits = TYPE_VECTOR_SUBPARTS (etype); >> > } >> > - icode = convert_optab_handler (vec_init_optab, mode, emode); >> > - if (icode != CODE_FOR_nothing) >> > - { >> > - unsigned int n = const_n_elts; >> > >> > - if (vector_typed_elts_p) >> > + /* For a non-const type vector, we check it is made up of similarly >> > + non-const type vectors. */ >> > + if (exact_div (n_elts, nunits).is_constant (&const_n_elts)) >> >> I think this is guaranteed by tree-cfg.cc:4767? >> >> So I think we can simply set const_n_elts to CONSTRUCTOR_NELTS >> for vector_typed_elts_p? >> > > I thought so too.. and then two days ago Ricard S committed this ACLE > testcase: > ./gcc/testsuite/gcc.target/aarch64/sve/acle/general/cops.c
JFTR, it was Tejas, not me :) Richard > > That ICEd here because n_elts is a poly [16, 16] and nunits was 1 I think.. > > Tamar