On Wed, Mar 18, 2015 at 10:19 AM, Yvan Roux <yvan.r...@linaro.org> wrote:
> Hi,
>
> This is a fix for PR64208 where LRA loops when dealing with
> iwmmxt_arm_movdi insn.  As explain in the PR, the issue was introduced
> on trunk and 4.9 branch by fix of PR rtl-optimization/60969 and then
> workaround by r211798 (-fuse-caller-save enable for ARM).
>
> The changes in IRA cost made by PR60969, changed the register class of
> this insn output from GENERAL_REGS to IWMMXT_REGS, and the
> redundancies in the insn pattern alternatives description force LRA to
> reload the pseudo, which generates the same iwmmxt_arm_movdi insn,
> which can't be resolved, and so on ...
>
> Removing the redundancies fixes the issue, as LRA find that
> alternative 8 (Uy => y) matches.
>
> This issue is present in 4.9 branch, but latent on trunk (the
> clobbering of IP and CC information added during -fuse-caller-save
> patch changed the register allocation).
>
> Cross compiled and regression tested on ARM targets (but not on an
> IWMMXT one), is it ok for trunk and 4.9 branch ?


This looks sane. It doesn't look reasonable for alternatives to be
duplicating each other.

Given I have neither the time nor the hardware to test this patch on,
I'd rather someone with an interest in iwMMX possibly folks from
Marvell can pick up testing for this patch.

regards
Ramana

>
> Rq: I think that adding IP and CC clobbers to
> CALL_INSN_FUNCTION_USAGE, as specified by AAPCS, in 4.9 branch is
> something we need too, I've a patch for that if you agree on that.
>
> Thanks,
> Yvan
>
> 2105-03-17  Yvan Roux  <yvan.r...@linaro.org>
>
>     PR target/64208
>     * config/arm/iwmmxt.md ("*iwmmxt_arm_movdi"): Cleanup redundant
> alternatives.

Reply via email to