[PATCH][ARM] PR target/69857 Remove bogus early return false; in gen_operands_ldrd_strd
Ramana Radhakrishnan
ramana.radhakrishnan@foss.arm.com
Tue May 24 09:07:00 GMT 2016
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.tkachov@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.
More information about the Gcc-patches
mailing list