<div dir="ltr"><div><div><div><div><div>Hello,<br></div>I have one more question about how phi nodes and 
their corresponding ICmp instructions are associated. maybe it is simple, but at first I thought that we always compare against one of incoming value. Is it true that  I
 can have only  two cases:<br>%indvars.iv = phi i64 [ %indvars.iv.next, %1 ], [ 0, %0 ]<br></div>...<br>%indvars.iv.next = add nuw nsw i64 %indvars.iv, 1<br>%exitcond = icmp eq i64 %indvars.iv.next, 32<br><br><br></div>and<br><br>%i.11 = phi i32 [ %<a href="http://i.11.be">i.11.be</a>, %.backedge ], [ 32, %1 ]<br>...<br>%13 = icmp sgt i32 %i.11, 3<br>?<br></div>In the first one we always have icmp on the incoming value after addition, multiplication and so on.<br></div>In the second - we compare at first against our phi variable and then perform operations. I have noticed, that the first case correspond to "up" operations - +=, *= ans do on, the second - to "down" : -=, /= and so on. But maybe it depends on logic of the cycle too... So, are their two cases : comparing in exiting block against PHI variable or against one of its' incoming value?<br></div>