Hi Kugan,

On 15/04/15 08:48, Kugan wrote:
As mentioned in PR65768, ARM gcc generates suboptimal code for constant
Uses in loop. Part of the reason is that ARM back-end is splitting
constants during expansion of RTL, making it hard for the RTL
optimization passes to optimize it. Zhenqiang posted a patch at
https://gcc.gnu.org/ml/gcc-patches/2014-08/msg00325.html to fix this

As mentioned in PR65768, I tried with few more test-cases and enhanced
it. Regression tested on arm-none-linux-gnu and no new regressions. Is
this OK for trunk?

Can you please post the code generated for the testcase
before and after the patch for the record?

Thanks,
Kyrill



Thanks,
Kugan


gcc/ChangeLog:

2015-04-15  Kugan Vivekanandarajah  <kug...@linaro.org>
            Zhenqiang Chen  <zhenqiang.c...@linaro.org>

        PR target/65768
        * config/arm/arm-protos.h (const_ok_for_split): New definition.
        * config/arm/arm.c (const_ok_for_split): New function.
        * config/arm/arm.md (subsi3, andsi3, iorsi3, xorsi3, movsi): Keep some
         large constants in register instead of splitting them.

gcc/testsuite/ChangeLog:

2015-04-15  Kugan Vivekanandarajah  <kug...@linaro.org>
            Zhenqiang Chen  <zhenqiang.c...@linaro.org>

        PR target/65768
        * gcc.target/arm/maskdata.c: New test.

Reply via email to