<div dir="ltr"><div>Yes, in fact I was not searching for that bur more dependence between instructions. <br>And we can have that by recursively search on operands. I didn't know that thank to the SSA form, operands give us the associated assignment instructions then the potentially dependence tree.<br><br></div>Thank you for your help Eli :)<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Jan 20, 2017 at 7:23 PM, Friedman, Eli <span dir="ltr"><<a href="mailto:efriedma@codeaurora.org" target="_blank">efriedma@codeaurora.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On 1/20/2017 4:43 AM, Thomas RUBIANO wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Thank you again Eli,<br>
<br>
I would like to know if it's not better to use DependenceAnalysis to know which instruction depends on others…<br>
I'm running this pass on a simple example:<br>
…<br>
while.body:                                       ; preds = %while.cond<br>
  %1 = load i32, i32* %y, align 4 ← I1<br>
  %2 = load i32, i32* %y, align 4<br>
  %mul = mul nsw i32 %1, %2 ← I2<br>
  store i32 %mul, i32* %z, align 4<br>
  %3 = load i32, i32* %z, align 4<br>
  call void @use(i32 %3)<br>
  %4 = load i32, i32* %x, align 4<br>
  %5 = load i32, i32* %x, align 4<br>
  %add = add nsw i32 %4, %5<br>
  store i32 %add, i32* %y, align 4<br>
  %6 = load i32, i32* %y, align 4<br>
  call void @use(i32 %6)<br>
  %7 = load i32, i32* %x2, align 4<br>
  store i32 %7, i32* %x, align 4<br>
  %8 = load i32, i32* %x, align 4<br>
  call void @use(i32 %8)<br>
  br label %while.cond<br>
…<br>
<br>
and here, for instance, I'm expecting to have a dependence between<br>
%1 = load i32, i32* %y, align 4 → I1<br>
… ↓ …<br>
%mul = mul nsw i32 %1, %2 → I2<br>
<br>
simply because the %mul uses %1 as input.<br>
<br>
But when I dump the dependence "depends(I1,I2,true)" I have nothing… null.<br>
Did I forget something?<br>
</blockquote>
<br></div></div>
DependenceAnalysis computes whether the memory accesses in two instructions overlap.  A multiply doesn't access memory, therefore the memory accesses don't overlap.<div class="HOEnZb"><div class="h5"><br>
<br>
-Eli<br>
<br>
-- <br>
Employee of Qualcomm Innovation Center, Inc.<br>
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project<br>
<br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"> RUBIANO Thomas<br></div>
</div>