[PATCH] emit-rtl.c: Allow vector subreg of float vectors

Andrew Stubbs ams@codesourcery.com
Fri Aug 7 12:52:12 GMT 2020


On 06/08/2020 04:54, Richard Sandiford wrote:
>> diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c
>> index f9b0e9714d9..d7067989ad7 100644
>> --- a/gcc/emit-rtl.c
>> +++ b/gcc/emit-rtl.c
>> @@ -947,6 +947,11 @@ validate_subreg (machine_mode omode, machine_mode imode,
>>     else if (VECTOR_MODE_P (omode)
>>   	   && GET_MODE_INNER (omode) == GET_MODE_INNER (imode))
>>       ;
>> +  /* Allow sections of vectors, both smaller and paradoxical.  (This just
>> +     works for integers, but needs to be explicitly allowed for floats.)  */
>> +  else if (VECTOR_MODE_P (omode) && VECTOR_MODE_P (imode)
>> +	   && GET_MODE_INNER (omode) == GET_MODE_INNER (imode))
>> +    ;
> 
> Might be missing something, but isn't this a subcondition of the
> previous “else if”?  It looks like that ought to catch every case
> that the new one does.

Apparently, Hongtao and Uroš fixed my problem while I was working on this.

Yes, my patch does the same (although I would question whether it's safe 
to use "GET_MODE_INNER (imode)" without having first confirmed "imode" 
is a vector mode).

Anyway, I can drop my patch.

Andrew


More information about the Gcc-patches mailing list