On 24/05/16 09:52, Kyrill Tkachov wrote:
> Hi all,
> 
> As the PR says, the gen_operands_ldrd_strd function has a spurious return 
> false in it.
> It seems to have been there from the beginning when that code was added.
> 
> The code is trying to transform:
>         mov r0, 0
>         str r0, [r2]
>         mov r0, 1
>         str r0, [r2, #4]
>      into:
>         mov r0, 0
>         mov r1, 1
>         strd r0, r1, [r2]
> 
> but thanks to this return only works on Thumb2.
> This means that the path it was not getting tested, and we weren't generating
> as many STRD instructions as we could when compiling with -marm.
> This patch removes the spurious return. It also re-indents the comment for 
> this
> transformation (replacing 8 spaces with tab) and adds a mention of the 
> behaviour
> for ARM state that was missing.
> 
> With it bootstrap and test in arm state on arm-none-linux-gnueabihf runs fine.
> 
> Across all of SPEC2006 this increased the number of STRD instructions used by 
> 0.12%
> (from 121375 -> 121530)
> 
> Ok for trunk?

Ok - oops ! 

Ramana
> 
> Thanks,
> Kyrill
> 
> 2016-05-24  Kyrylo Tkachov  <kyrylo.tkac...@arm.com>
> 
>     PR target/69857
>     * config/arm/arm.c (gen_operands_ldrd_strd): Remove bogus early
>     return.  Reindent transformation comment and mention the ARM state
>     behavior.

Reply via email to