Hi, for AArch64 it is also needed to take into account SIGN_EXTRACT in the set_address_base and set_address_index routines, as we acan encounter that kind of insn for instance :
(insn 29 27 5 7 (set (mem:SI (plus:DI (sign_extract:DI (mult:DI (subreg:DI (reg/v:SI 76 [ elt ]) 0) ... with the attached patch and the LRA enabled, compiler now bootstrap but I've few regressions in the testsuite, gcc.c/torture/execute/fp-cmp-4l.c for instance. I was looking at these issues before submitting a complete AArch64 LRA enabling patch, but as you are speaking about that... Valdimir, for the ARM target I already had the ASHIFTRT and LSHIFTRT addition on my side, but still had an ICE during bootstrap with LRA when compiling fixed-bit.c (the Max number of generated reload insns we talk about already) is it working for you ? Thanks, Yvan On 27 June 2013 19:21, Vladimir Makarov <vmaka...@redhat.com> wrote: > On 06/27/2013 01:10 PM, Richard Earnshaw wrote: >> On 27/06/13 17:59, Vladimir Makarov wrote: >>> On 06/27/2013 12:50 PM, Richard Earnshaw wrote: >>>> On 27/06/13 17:32, Vladimir Makarov wrote: >>>>> On 06/27/2013 12:15 PM, Richard Sandiford wrote: >>>>>> Vladimir Makarov <vmaka...@redhat.com> writes: >>>>>>> Richard, is it ok to commit to the trunk? >>>>>> Looks good to me, but I gave up the right to approve it. I think you >>>>>> need ROTATERT too though (see arm_legitimate_index_p). >>>>>> >>>>>> Also, sorry for the nitpick, but once the full condition overflows >>>>>> one line, >>>>>> I think each == test should be on its own line. >>>>>> >>>>>> >>>>> Thanks for the comments. Here is the new version of the patch: >>>>> >>>>> 2013-06-27 Vladimir Makarov <vmaka...@redhat.com> >>>>> >>>>> * rtlanal.c (must_be_index_p, set_address_index): Add >>>>> ASHIFTRT, >>>>> LSHIFTRT, and ROTATERT. >>>>> >>>> >>>> Although it's not needed for ARM, why would you leave out ROTATE? >>>> >>>> Hmm, on second thoughts ROTATERT immediate is always canonicalized to >>>> ROTATE (Pmode-size - imm), so it might be needed on ARM too. >>> Thanks, Richard. I guess we can include ROTATE. It definitely will not >>> hurt but it might be useful for other targets too. >>> >>> So I added ROTATE to the patch and like to get approval for it too. >>> >>> >> >> Oh, and another thought, AArch64 will probably need ZERO_EXTEND and >> SIGN_EXTEND as well. >> > It is already implemented as many targets use it.
aarch64-lra.diff
Description: Binary data