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.