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.