"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:

    http://gcc.gnu.org/ml/gcc-patches/2013-12/msg00824.html

for the longer version.

Thanks,
Richard

Reply via email to