On Thu, Nov 20, 2014 at 1:48 AM, Zhenqiang Chen <zhenqiang.c...@arm.com> wrote:
> Hi,
>
> r217646 enhances ifcvt to handle cbranchcc4 instruction. But ifcvt does not
> strictly check the dependence before moving instructions before IF. Then
> some instructions, which clobber CC, are inserted before the cbranchcc4
> instruction.
>
> For the case in the patch, ifcvt transfers code from
>
>    5: r87:SI=r117:SI
>    22: pc={(flags:CCGOC>=0)?L26:pc}
>    25: {r87:SI=-r117:SI;clobber flags:CC;}
>
> to
>    5: r87:SI=r117:SI
>   136: {r145:SI=-r117:SI;clobber flags:CC;} // CC is clobbered
>   137: r87:SI={(flags:CCGOC<0)?r145:SI:r117:SI}
>
> The patch skips moving insns, which clobber CC, before cbranchcc4.
>
> Bootstrap and no make check regression on X86-64 and i686.
> All the failed cases in PR63917 PASS.
>
> OK for trunk?
> Thanks!
> -Zhenqiang
>
> ChangeLog:
> 2014-11-20  Zhenqiang Chen  <zhenqiang.c...@arm.com>
>
>         PR rtl-optimization/63917
>         * ifcvt.c (clobber_cc_p, use_cc_p): New functions.
>         (noce_process_if_block, check_cond_move_block): Check CC references.
>
> testsuite/ChangeLog:
> 2014-11-20  Zhenqiang Chen  <zhenqiang.c...@arm.com>
>
>         * gcc.target/i386/floatsitf.c: New test.
>

Why do you need a new testcase?  There are many failures with the
existing testcases.

-- 
H.J.

Reply via email to