On 09/17/14 03:18, Zhenqiang Chen wrote:
Hi,

When assign_hard_reg, we always check_hard_reg_p, which has code

if (! TEST_HARD_REG_BIT (profitable_regs, hard_regno))
   return false;

i.e. If a hard_regno is not in profitable_regs, we can not allocate it to
the ira_allocno_t A.

So the conflict on a hard_regno, which does not belong to the
profitable_regs, can be ignored. Please refer
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63210 for the detail of the
test case.

Bootstrap and no make check regression on X86-64 and ARM Chromebook.
NO spec2k performance regression on X86-64 and ARM Chromebook.
CSiBE code size is 0.01% better for ARM Cortex-M0.

OK for trunk?
Thanks!
-Zhenqiang

ChangeLog:
2014-09-17  Zhenqiang Chen  <zhenqiang.c...@arm.com>

        PR rtl-optimization/63210
        * ira-color.c (assign_hard_reg): Ignore conflict cost if the
        HARD_REGNO is not availabe for CONFLICT_A.

testsuite/ChangeLog:
2014-09-17  Zhenqiang Chen  <zhenqiang.c...@arm.com>

         * gcc.target/arm/pr63210.c: New test.
OK for the trunk.

Thanks,
Jeff

Reply via email to