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

Reply via email to