When compile the following case and look at the SCEV analysis, I notice that the first two loops don't have a LoopInvariantBackedgeTakenCount (surprising) and the last one does (not surprising, except in the context of the first two examples). <br>
<div><br></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><div><font face="courier new, monospace"><b>void p4(int *A, int *B, long int n) {</b></font></div></div><div><div><font face="courier new, monospace"><b>  for (char i = 0; i < n; i++) {</b></font></div>
</div><div><div><font face="courier new, monospace"><b>    A[i + 2] = i;</b></font></div></div><div><div><font face="courier new, monospace"><b>    *B++ = A[i];</b></font></div></div><div><div><font face="courier new, monospace"><b>  }</b></font></div>
</div><div><div><font face="courier new, monospace"><b>}</b></font></div></div><div><div><font face="courier new, monospace"><b><br></b></font></div></div><div><div><font face="courier new, monospace"><b>void p5(int *A, int *B, long int n) {</b></font></div>
</div><div><div><font face="courier new, monospace"><b>  for (short i = 0; i < n; i++) {</b></font></div></div><div><div><font face="courier new, monospace"><b>    A[i + 2] = i;</b></font></div></div><div><div><font face="courier new, monospace"><b>    *B++ = A[i];</b></font></div>
</div><div><div><font face="courier new, monospace"><b>  }</b></font></div></div><div><div><font face="courier new, monospace"><b>}</b></font></div></div><div><div><font face="courier new, monospace"><b><br></b></font></div>
</div><div><div><font face="courier new, monospace"><b>void p6(int *A, int *B, long int n) {</b></font></div></div><div><div><font face="courier new, monospace"><b>  for (int i = 0; i < n; i++) {</b></font></div></div>
<div><div><font face="courier new, monospace"><b>    A[i + 2] = i;</b></font></div></div><div><div><font face="courier new, monospace"><b>    *B++ = A[i];</b></font></div></div><div><div><font face="courier new, monospace"><b>  }</b></font></div>
</div><div><div><font face="courier new, monospace"><b>}</b></font></div></div></blockquote><div><br></div><div>Why the difference? Is there a reason we don't implement all the loops using 64-bit values?</div><div><br>
</div><div>Thanks,</div><div>Preston</div><div><br></div>