On 11/27/2013, 12:16 PM, Jeff Law wrote:
On 11/27/13 03:18, Yvan Roux wrote:
Ping

On 18 November 2013 09:40, Yvan Roux <yvan.r...@linaro.org> wrote:
Ping.

On 7 November 2013 15:56, Yvan Roux <yvan.r...@linaro.org> wrote:
Hi,

this patch fixed an LRA cycling due to secondary reload (Thumb mode).
Notice that this patch is a prerequisite to turn on LRA by default on
ARM.  Bootstrapped on a9 and a15 without any regression in the
testsuite as LRA is off by default and with the regression reported in
the thread bellow when LRA is on.

http://gcc.gnu.org/ml/gcc-patches/2013-11/msg00725.html

Thanks,
Yvan

2013-11-07  Yvan Roux  <yvan.r...@linaro.org>

* config/arm/arm.h (THUMB_SECONDARY_INPUT_RELOAD_CLASS): Return NO_REGS
         for LRA
?

How can that be correct?

The secondary reload macros/hooks define cases where additional registers are needed to reload certain forms of rtl. I doubt the use of LRA completely eliminates the need for secondary reloads.
When I designed LRA I wanted to remove as many hooks as possible because I thought insn constraints as major info source are enough. Unfortunately I did not succeed fully with secondary reload hooks and macros. It is still needed for some complicated cases but general rule to port LRA to a target is to try to switch these hooks off.

For example, LRA can generate a move of pseudos of classes for which hardware has no real insn. After that looking on the move constraints, LRA can generate more move insns and additional pseudos to generate moves (loads or stores if additional pseudos got NO_REGS) which represent real hardware insns. In complicated cases when these macros are still needed, LRA runs into infinite loop of such move generation if the macros are not used.

I might be return to a project to remove necessity of such hooks and macros for LRA but I am not sure when. I guess I need to write a small guidance too how to port LRA.

Also I found that in many cases as here, the macros although working for reload can confuse LRA (because of different reload pass and LRA implementation approaches). So I guess the patch is ok although I can not approve it as I am not an arm port maintainer.

Reply via email to