[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