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