"H.J. Lu" <hjl.to...@gmail.com> writes:
> On Tue, Dec 10, 2013 at 9:57 AM, Richard Sandiford
> <rdsandif...@googlemail.com> wrote:
>> "H.J. Lu" <hjl.to...@gmail.com> writes:
>>> On Tue, Dec 10, 2013 at 8:05 AM, Kirill Yukhin
>>> <kirill.yuk...@gmail.com> wrote:
>>>> On 09 Dec 14:08, H.J. Lu wrote:
>>>>>
>>>>> There are no regressions on Linux/x86-64 with -m32 and -m64.
>>>>> Can you check if it improves code quality on x886?
>>>>
>>>> As second thought. If Tejas and Richard are right and it is simply 
>>>> incorrect
>>>> to check any offsets in this hook, may be we can end up with patch in the
>>>> bottom?
>>>
>>> What is wrong to pass the correct offset to
>>> CANNOT_CHANGE_MODE_CLASS?  Backends are free to
>>> ignore it.
>>
>> The point is that:
>>
>>>> -      /* Vector registers do not support subreg with nonzero offsets, 
>>>> which
>>>> -        are otherwise valid for integer registers.  Since we can't see
>>>> -        whether we have a nonzero offset from here, prohibit all
>>>> -         nonparadoxical subregs changing size.  */
>>>> -      if (GET_MODE_SIZE (to) < GET_MODE_SIZE (from))
>>>> -       return true;
>>
>> seems to be trying to reject things like (subreg:SF (reg:V4SF X) 1),
>> which is always invalid for a single-register V4SF.  See:
>
> That is correct.

Sorry, what I mean is: that subreg is always invalid for single-
register V4SFs regardless of the target.  This isn't something that
CANNOT_CHANGE_MODE_CLASS should be expected to check.

Thanks,
Richard

Reply via email to