Hi;<div><br></div><div>I was playing with the -lda pass of LLVM on the following program-</div><div><br></div><div><div><div>#include <stdio.h></div><div>void main()</div><div>{</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>int a[10];</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span>int i;</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>for(i = 0; i < 4; i ++)</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>{</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span>a[i] = a[i-1]+1;</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>}</div><div>}</div></div><div><br></div><div>I run the following commands - </div>
<div><br></div><div>clang a.c -emit-llvm -S</div><div><div>opt -analyze -stats -lda a.s</div></div><div><br></div><div>The output is - </div><div><br></div><div><div>Printing analysis 'Loop Dependence Analysis':</div>
<div>Loop at depth 1, header block: %for.cond</div><div> Load/store instructions: 7</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>0: %0 = load i32* %i, align 4</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>1: %4 = load i32* %i, align 4</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span>2: store i32 %inc, i32* %i, align 4</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>3: %1 = load i32* %i, align 4</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>4: %2 = load i32* %arrayidx, align 4</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span>5: %3 = load i32* %i, align 4</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>6: store i32 %add, i32* %arrayidx1, align 4</div><div>
Pairwise dependence results:</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>0,2: dependent</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>0,6: dependent</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>1,2: dependent</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span>1,6: dependent</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>2,3: dependent</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>2,4: dependent</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span>2,5: dependent</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>2,6: dependent</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>3,6: dependent</div>
<div><span class="Apple-tab-span" style="white-space:pre"> </span>4,6: dependent</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>5,6: dependent</div><div>===-------------------------------------------------------------------------===</div>
<div> ... Statistics Collected ...</div><div>===-------------------------------------------------------------------------===</div><div><br></div><div>11 lda - Number of dependence queries answered</div>
<div>11 lda - Number of distinct dependence pairs analysed</div><div>11 lda - Number of pairs with unknown accesses</div></div><div><br></div><div>Why do the " Pairwise dependence results:" and the "Statistics Collected" differ? Like first we get 11 "dependent"(must) accesses and later it says 11 "unknown" (may) accesses? Am I doing anything wrong or the code seems buggy?</div>
<div><br></div><div>Thanks;</div>-- <br>Arnamoy Bhattacharyya<br>Athabasca Hall 143<br>Department of Computing Science - University of Alberta<br>Edmonton, Alberta, Canada, T6G 2E8<br>587-710-7073<br>
</div>