<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On Mar 7, 2019, at 2:01 PM, Son Tuan VU <<a href="mailto:sontuan.vu119@gmail.com" class="">sontuan.vu119@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class=""><div class="">Hi Quentin,</div><div class=""><br class=""></div><div class="">Well what I'm trying to do is that, given a (maybe really big) set of particular points Pi, find out all the SSA variables Vi that are live at these points (i.e. def(Vi) dom Pi and at least one use(Vi) is reachable from Pi). </div></div></div></blockquote><div><br class=""></div><div>That sounds like answering a liveness query indeed, but what do you do with this information?</div><br class=""><blockquote type="cite" class=""><div class=""><div dir="ltr" class=""><div class="">The problem with classic def-use chains and dominance property is that I have to do this query for each point Pi and each variable Vi, which does not scale for big programs or for big set of particular points.</div><div class=""><br class=""></div><div class="">Cheers,</div><div class=""><br class=""></div><div class=""><div class=""><div class=""><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr" class="">Son Tuan Vu</div></div></div><br class=""></div></div></div><br class=""><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, Mar 7, 2019 at 8:13 PM Quentin Colombet <<a href="mailto:qcolombet@apple.com" class="">qcolombet@apple.com</a>> wrote:<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 style="overflow-wrap: break-word;" class="">Hi,<br class=""><div class=""><br class=""><blockquote type="cite" class=""><div class="">On Mar 6, 2019, at 9:58 AM, Son Tuan VU via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" target="_blank" class="">llvm-dev@lists.llvm.org</a>> wrote:</div><br class="gmail-m_3872445694859716428Apple-interchange-newline"><div class=""><div dir="ltr" class=""><div dir="ltr" class=""><div dir="ltr" class=""><div dir="ltr" class=""><div class="">Hello,</div><div class=""><br class=""></div><div class="">I found this thread back in 2014 [1] . Does anyone know if there has been any attempt to answer this request?</div><div class=""><br class=""></div><div class="">To clarify, I am looking for an analysis that computes the textbook definition of variable liveness: "given a SSA value V and a point P, is there a possible path from P to any use of V?" which is equivalent to "is V live at point P?"</div><div class=""><br class=""></div><div class="">I can write something myself (and will if need be), but just want to avoid reinventing the wheels in case improvements have been made since 2014. If not, what's the best way to contribute this analysis to LLVM? I mean, for example, is "Computing Liveness Sets for SSA" by Boissinot  [2] efficient enough to be implemented in LLVM?</div></div></div></div></div></div></blockquote><div class=""><br class=""></div><div class="">This one should be efficient enough.</div><div class="">That said, what are you trying to achieve?</div><div class=""><br class=""></div><div class="">The reason we don’t have such algorithm in LLVM IR is because we don’t need it. Usually def-uses chains and dominance property are enough for what the optimizers want to do.</div><br class=""><blockquote type="cite" class=""><div class=""><div dir="ltr" class=""><div dir="ltr" class=""><div dir="ltr" class=""><div dir="ltr" class=""><div class=""> Or should I find a better algorithm to solve this?<br class=""></div><div class=""><br class=""></div><div class="">[1] <a href="http://lists.llvm.org/pipermail/llvm-dev/2014-July/074793.html" target="_blank" class="">http://lists.llvm.org/pipermail/llvm-dev/2014-July/074793.html</a></div><div class="">[2] <a href="http://hal.inria.fr/docs/00/58/53/03/PDF/RR-7503.pdf" target="_blank" class="">http://hal.inria.fr/docs/00/58/53/03/PDF/RR-7503.pdf</a><br class=""></div><div class=""><br class=""></div><div class="">Thanks for your help,</div><div class=""><br class=""></div><div class="">Cheers</div><div class=""><br class=""></div><div class=""></div><div class=""><div class=""><div dir="ltr" class="gmail-m_3872445694859716428gmail_signature"><div dir="ltr" class="">Son Tuan Vu</div></div></div></div></div></div></div></div>
_______________________________________________<br class="">LLVM Developers mailing list<br class=""><a href="mailto:llvm-dev@lists.llvm.org" target="_blank" class="">llvm-dev@lists.llvm.org</a><br class=""><a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" target="_blank" class="">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br class=""></div></blockquote></div><br class=""></div></blockquote></div>
</div></blockquote></div><br class=""></body></html>