<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
    <title></title>
  </head>
  <body bgcolor="#ffffff" text="#000000">
    On 5/3/11 4:08 PM, tarun agrawal wrote:
    <blockquote
      cite="mid:BANLkTikdgWRykEQEEk6QDHChbzRNdu8D1A@mail.gmail.com"
      type="cite">
      <meta http-equiv="Content-Type" content="text/html;
        charset=ISO-8859-1">
      HI <br>
      <br>
      I know it is a very simple question not worth asking here but I am
      really struggling pls help me out..<br>
    </blockquote>
    <br>
    This is a question worth asking; it's just that not everyone can
    answer all the time.<br>
    :)<br>
    <br>
    If all you want to do is to follow the SSA def-use chain within a
    single function, then this is very easy.  All you have to do is use
    the use_iterator of the Instruction object to iterate through its
    def-use chain.  For all uses that are instructions, use the
    getParent() method to find the basic block containing the
    instruction.  That's it.<br>
    <br>
    This approach won't work in two cases:<br>
    <br>
    1) If you want to trace def/use through memory.  Memory is not in
    SSA form, and so you have to use extra analysis to track from which
    store the result of a load originates.<br>
    <br>
    2) If you want to track def/use inter-procedurally through function
    arguments and return values.  If you don't care about tracking
    through memory, this is a fairly easy inter-procedural analysis to
    do, and we have some code internally at University of Illinois that
    does it.  If you need it, I can talk to Vikram and see if we can
    give you a copy.<br>
    <br>
    For more information on how to iterate through def-use chains, see
    the LLVM Programmer's Manual:<br>
    <a class="moz-txt-link-freetext" href="http://llvm.org/docs/ProgrammersManual.html#iterate_chains">http://llvm.org/docs/ProgrammersManual.html#iterate_chains</a><br>
    <br>
    -- John T.<br>
    <br>
    <blockquote
      cite="mid:BANLkTikdgWRykEQEEk6QDHChbzRNdu8D1A@mail.gmail.com"
      type="cite"><br>
      <div class="gmail_quote">On Tue, May 3, 2011 at 10:10 PM, tarun
        agrawal <span dir="ltr"><<a moz-do-not-send="true"
            href="mailto:tarun@cse.iitb.ac.in">tarun@cse.iitb.ac.in</a>></span>
        wrote:<br>
        <blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt
          0.8ex; border-left: 1px solid rgb(204, 204, 204);
          padding-left: 1ex;">Hi,<br>
          <br>
          I need to get all the basic blocks that are there, in the path
          from definition of an instruction to use of that instruction.<br>
          <br>
          <br>
          Regards <br>
          <font color="#888888">Tarun<br>
          </font></blockquote>
      </div>
      <br>
      <pre wrap="">
<fieldset class="mimeAttachmentHeader"></fieldset>
_______________________________________________
LLVM Developers mailing list
<a class="moz-txt-link-abbreviated" href="mailto:LLVMdev@cs.uiuc.edu">LLVMdev@cs.uiuc.edu</a>         <a class="moz-txt-link-freetext" href="http://llvm.cs.uiuc.edu">http://llvm.cs.uiuc.edu</a>
<a class="moz-txt-link-freetext" href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>