https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64208

Yvan Roux <yroux at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED
                 CC|                            |yroux at gcc dot gnu.org
           Assignee|unassigned at gcc dot gnu.org      |yroux at gcc dot gnu.org

--- Comment #2 from Yvan Roux <yroux at gcc dot gnu.org> ---
Regression 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 PR fix changes some IRA cost which makes it choose a IWMMXT_REGS (instead
of a GENERAL_REGS one) for the result of iwmmxt_arm_movdi insn and the
alternatives of this pattern make LRA stuck in a loop.

The -fuse-caller-save patch fixed the issue because it adds IP and CC cloobers
to CALL_INSN_FUNCTION_USAGE, which changes the register allocation (a
GENERAL_REGS is selected this time), but the real issue is in the alternatives
description of iwmmxt_arm_movdi insn.  I've a patch for it that I'll submit.

Reply via email to