Richard Biener <[email protected]> writes:
>> What do we allow for non-boolean constructors. E.g. for:
>>
>> v2hi = 0xf001;
>>
>> do we allow the CONSTRUCTOR to be { 0xf001 }? Is the type of an
>> initialiser value allowed to be arbitrarily different from the type
>> of the elements being initialised?
>>
>> Or is there requirement that (say) each constructor element is either:
>>
>> - a scalar that initialises one element of the constructed vector
>> - a vector of N elements that initialises N elements of the constructed
>> vector
>>
>> ?
>>
>> Like you say, it mostly seems like guesswork how booleans would be
>> handled here, but personally I don't know the answer for non-booleans
>> either :-)
>
> There's extensive checking in tree-cfg.c for vector CTORs meanwhile.
> We only supporm uniform element CTORs with only trailing zeros elided.
> And the elements need to either have types of the vector component
> or be vectors with such component.
Ah, great. So in that case, could we ditch bitsize altogether and
just use:
unsigned int nelts = (VECTOR_TYPE_P (val_type)
? TYPE_VECTOR_SUBPARTS (val_type).to_constant () : 1);
or equivalent to work out the number of elements being initialised
by each constructor element?
Thanks,
Richard