[PATCH] improve ifcvt optimization (PR rtl-optimization/89430)
Jeff Law
law@redhat.com
Mon Mar 18 21:53:00 GMT 2019
On 3/14/19 10:46 PM, JiangNing OS wrote:
> This patch is to fix a missing ifcvt opportunity in back-end. For the simple case below,
>
> if (...)
> x = a; /* x is memory */
> /* no else */
>
> We can generate conditional move and remove the branch as below if the target cost is acceptable.
>
> r1 = x
> r2 = a
> cmp ...
> csel r3, r1, r2, cond
> x = r3
>
> This could be safe if x is a stack variable, and there isn't any address taken in current function, so the store speculation can be avoided.
>
> In practice, this optimization can improve a real application performance by %4 on aarch64.
This seems like something that should be addressed for gcc-10 rather
than gcc-9. Can we come back to it once gcc-10 development starts?
jeff
More information about the Gcc-patches
mailing list