hi all,<br><br>i am have a project need to compute the back-edge taken count of a loop, and the "getBackedgeTakenCount" function of ScalarEvolution could do this for me.<br><br>but later i found that ScalarEvolution could not compute loops with test expression containing a "=", such as:<br>
<br>void scop_func(long A[], long n) {<br>
  long i;<br>
<br>
  for (i = 1; i<= n; i++)<br>
    A[i] = 1;<br>
}<br><br>after have a look at the code that computing the back-edge taken count, i found that ScalarEvolution could only compute back-edge taken count if the exit condition is ICMP_NE/ICMP_EQ/ICMP_SLT/ICMP_SGT/ICMP_ULT/ICMP_UGT (ignoring "ComputeBackedgeTakenCountExhaustively"), and the function "SimplifyICmpOperands" will try to convert other conditions to the conditions listed above, by doing something like "i <= n" to "i < n+1", but it refuse to do that unless it could prove "n + 1" will not cause a overflow.<br>
<br>So, could us just set "n + 1" to the Exact field of BackedgeTakenInfo, and set something like SCEVInfinite  to the Max field of BackedgeTakenInfo?<br><br>thanks<br>ether<br>