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>