On Tue, Jan 5, 2016 at 10:34 PM, Richard Sandiford
<rdsandif...@googlemail.com> wrote:
> Jakub Jelinek <ja...@redhat.com> writes:
>> On Mon, Jan 04, 2016 at 03:25:48PM -0800, H.J. Lu wrote:
>>> LRA is fine.  I should use
>>>
>>> (define_memory_constraint "Bm"
>>>   "@internal Vector memory operand."
>>>   (match_operand 0 "vector_memory_operand"))
>>>
>>> instead of
>>>
>>> (define_constraint "Bm"
>>>   "@internal Vector memory operand."
>>>   (match_operand 0 "vector_memory_operand"))
>>
>> I don't think so.  At least the documentation says that
>> define_memory_constraint is for MEM constraints where if they are not
>> satisfied they can be made to satisfy by forcing the address into a
>> register.  But that is not the case here, if a MEM is misaligned, no
>> equivalent changes to the XEXP (mem, 0) will make it aligned.
>
> Yeah.  It seems like a missing feature though.  Maybe
> define_memory_constraint should have two conditions, one for
> when the MEM is valid and one for when the address is?
> Guess that isn't stage 3 material though.  And maybe longer-term
> we should avoid define_memory_constraint altogether and have an
> automatic way of testing whether replacing the address with a
> register is OK.

If we are going in this direction, is it possible define_memory_constraint
> Thanks,
> Richard

Reply via email to