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.

Thanks,
Richard

Reply via email to