<div dir="ltr"><div dir="ltr"><div><div><div><div>Dear LLVM developers,<br><br></div>I
 am Shen, a PhD student in computer science in lehigh university. Now I 
am using LLVM to generate a Program Dependence Graph(PDG), and each node
 in my graph represent a statement(should be an Instruction in LLVM, i 
think). <br><br></div>Now I have generated a coarse PDG on BasicBlock level as shown in the following figure, using APIs such as<br><pre>std::string getNodeLabel(<span>const</span> <a href="http://llvm.org/docs/doxygen/html/classllvm_1_1BasicBlock.html" title="LLVM Basic Block Representation." target="_blank">BasicBlock</a> *<a href="http://llvm.org/docs/doxygen/html/DominanceFrontierImpl_8h.html#adeb436e8060b57a35092e28f77eeb7d3" target="_blank">Node</a>, <span>const</span> <a href="http://llvm.org/docs/doxygen/html/classllvm_1_1Function.html" target="_blank">Function</a> *Graph) </pre>However,
 all APIs I found in class DOTGraphTraits ask "BasicBlock", not 
Instruction for arguments. So if i want to generate a more fine-grained 
PDG on "Instruction" level, should i revise the llvm source code to add 
my new APIs, or use some built-in APIs i did't know? Or, can i generate a
 basicblock for each instruction? Thank you!<br><br><img src="cid:ii_i6v1kguo0_14be5fbe5741d313" height="149" width="473"><br>​<br></div>Best regards,<br><br></div>Shen<br></div>
</div>