<div dir="ltr">Hi John,<br><br>Thanks so much!<div>I have checked the BasicBlock. However, there may be multiple call sites in one basic block, so it cannot guarantee correctness.<br>Finally, I chose to add the CallInst into VDNode during DAG construction, and then add the CallInst into MachineInstr during instruction selection.</div><div><br></div><div>Thanks all the same!</div><div><br></div><div>Best regards,</div><div><br></div><div>Li Qingan</div></div><div class="gmail_extra"><br><div class="gmail_quote">2014-11-17 1:44 GMT+08:00 John Criswell <span dir="ltr"><<a href="mailto:jtcriswel@gmail.com" target="_blank">jtcriswel@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  
    
  
  <div bgcolor="#FFFFFF" text="#000000"><div><div class="h5">
    <div>On 11/14/14, 6:53 AM, Qingan Li wrote:<br>
    </div>
    <blockquote type="cite">
      <div dir="ltr">
        <div>Hi,</div>
        <div><br>
        </div>
        <div>Recently, I am working on some information collection on
          the machine instruction (MachineInstr) level.</div>
        <div>But, sometimes, I need check the corresponding IR level
          instruction of the a machine instruction.</div>
        <div><br>
        </div>
        <div>When visiting a machine instruction which is a call
          (MachineInstr::isCall()), I need to check the arguments of
          this call site.</div>
        <div>I know that the CallSite class provides good facility for
          this work, but the CallSite can be constructed only
          fromInstruction rather than MachineInstr.</div>
        <div><br>
        </div>
        <div>Is there any workaround? <br>
        </div>
      </div>
    </blockquote>
    <br></div></div>
    If you're working on MachineInstr's, then you can probably examine
    the MachineIntr's operands to determine which function is being
    called.  This probably won't be target independent, but if you're
    working at the MachineInstr level, you're not doing target
    independent work, anyway.<br>
    <br>
    Alternatively, you should check to see if the MachineBasicBlock has
    a method to fetch the BasicBlock from which it was generated.  Using
    that, you could potentially scan the BasicBlock looking for a
    CallInst or InvokeInst that is likely to match the MachineInstr.<br>
    <br>
    Regards,<br>
    <br>
    John Criswell<br>
    <br>
    <blockquote type="cite"><span class="">
      <div dir="ltr">
        <div><br>
        </div>
        <div>Thanks.</div>
        <div><br>
        </div>
        -- <br>
        <div>Best regards,
          <div><br>
          </div>
          <div>Li Qingan</div>
        </div>
      </div>
      <br>
      <fieldset></fieldset>
      <br>
      </span><pre>_______________________________________________
LLVM Developers mailing list
<a href="mailto:LLVMdev@cs.uiuc.edu" target="_blank">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><span class="HOEnZb"><font color="#888888">
</font></span></pre><span class="HOEnZb"><font color="#888888">
    </font></span></blockquote><span class="HOEnZb"><font color="#888888">
    <br>
    <br>
    <pre cols="72">-- 
John Criswell
Assistant Professor
Department of Computer Science, University of Rochester
<a href="http://www.cs.rochester.edu/u/criswell" target="_blank">http://www.cs.rochester.edu/u/criswell</a></pre>
  </font></span></div>

</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature">Best regards,<div><br></div><div>Li Qingan</div></div>
</div>