On 18/12/15 13:16, Bernd Schmidt wrote:
On 12/18/2015 02:07 PM, Kyrill Tkachov wrote:
In this PR we have a THEN and an ELSE block where one uses the condition
reg from the preceeding comparison
but the other block has an arithmetic operation that clobbers the CC reg.
ifcvt emits the latter first and dead code elimination later sees this
and eliminates the first comparison
because it sees that the CC reg is clobbered between the comparison and
its usage.

     (noce_try_cmove_arith): Check CC reg usage in both blocks
     and emit them in such an order so as not to clobber the CC reg
     before its use, if possible.

Why is this done here? It looks to me like bbs_ok_for_cmove_arith is the 
function that already tries to sort out issues like this. Does it maybe just 
need to be extended to see clobbers?


I can do that. A prototype of that approach works for this testacase.
I'll test more extensively...

Thanks,
Kyrill


Bernd


Reply via email to