<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div dir="auto" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Hi Alberto,</div><div dir="auto" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""></div><div dir="auto" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">I have not used this myself, but I think you should be able to visit your Instruction ‘users()’. I think the name this function was given is a bit confusing, but this returns an iterator range you can iterate through to find instructions that depend on a given one. </div><div dir="auto" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""></div><div dir="auto" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Similarly, you have the function ‘uses()’ that can be used to traverse down the DAG when instructions are still on SSA form. </div><div dir="auto" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""></div><div dir="auto" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Look also at the related functions 'user_end()’, 'user_begin()’, 'use_end()' and 'use_begin() </div><div dir="auto" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""></div><div dir="auto" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">I hope this helps.</div><div dir="auto" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""></div><div dir="auto" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Joan<br class=""><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On 28 Jul 2019, at 08:29, Alberto Barbaro via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" class="">llvm-dev@lists.llvm.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class=""><div class="">Hi,</div><div class="">I was thinking that maybe there is always some sort of dependency analysis that would allow me to visit a tree from the AllocaInst to the IcmpInst. Is it already possible?</div><div class=""><br class=""></div><div class="">Thanks<br class=""></div></div><br class=""><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Il giorno dom 28 lug 2019 alle ore 07:21 Alberto Barbaro <<a href="mailto:barbaro.alberto@gmail.com" class="">barbaro.alberto@gmail.com</a>> ha scritto:<br class=""></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr" class=""><div class="">Hi Tim,</div><div class="">as always thanks for your help. Unfortunately I made a mistake in my email but apart from that I still have problems.<br class=""></div><div class=""><br class=""></div><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Il giorno sab 27 lug 2019 alle ore 11:53 Tim Northover <<a href="mailto:t.p.northover@gmail.com" target="_blank" class="">t.p.northover@gmail.com</a>> ha scritto:<br class=""></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi Alberto,<br class="">
<br class="">
On Sat, 27 Jul 2019 at 10:09, Alberto Barbaro via llvm-dev<br class="">
<<a href="mailto:llvm-dev@lists.llvm.org" target="_blank" class="">llvm-dev@lists.llvm.org</a>> wrote:<br class="">
> Having the reference I to the instruction in bold.Can i efficiently know that the variable %11 was "created" by the %3 = alloca [40 x i8], align 16.<br class="">
<br class="">
Yes, I.getOperand(0) *is* the AllocaInst in this case. So for example<br class="">
isa<AllocaInst>(I.getOperand(0)) will return true. And if you care<br class="">
about more details you can dyn_cast<AllocaInst> it and check any other<br class="">
properties you want.<br class="">
<br class=""></blockquote><div class=""><br class=""></div><div class="">I would like to use the approach you described considering I to be a reference to the icmp instruction ( %13 = icmp eq i32 %12, 66 ). From what I understood i should do something like:</div><div class=""><br class=""></div><div class="">Instruction* source;<br class=""> <br class="">   if(source = dyn_cast<AllocaInst>(I.getOperand(0))) {<br class="">    cout << "Alloca Inst" << endl;<br class="">              I.dump();<br class="">                   getchar();<br class=""> }</div><div class=""><br class=""></div><div class="">I thought I.getOperand(0) was a reference to the instruction that have created %12. What am I missing?<br class=""></div><div class=""> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Cheers.<br class="">
<br class="">
Tim.<br class=""></blockquote><div class=""><br class=""></div><div class="">Thanks again</div><div class="">Alberto<br class=""></div></div></div>
</blockquote></div>
_______________________________________________<br class="">LLVM Developers mailing list<br class=""><a href="mailto:llvm-dev@lists.llvm.org" class="">llvm-dev@lists.llvm.org</a><br class="">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev<br class=""></div></blockquote></div><br class=""></div></div></body></html>