[LLVMdev] Accessing Dominator Tree

John Criswell criswell at illinois.edu
Fri Jul 29 07:56:20 PDT 2011

On 7/29/11 9:43 AM, david.dewey at comcast.net wrote:
> Hello,
> I am working on a project that requires me to perform some analysis on 
> a bitcode file outside the existing LLVM analysis frameworks (opt, 
> etc.).  In what I am doing, I need to be able to access the dominator 
> tree for a given function.  Is there a way I can instantiate a 
> DominatorTree object outside the existing analysis frameworks?

If you use a PassManager object to run passes, then you can simply have 
your analysis be an LLVM pass and use the standard getAnalysis<>() 
template function to get access to the dominator tree analysis.  Any 
program can create a PassManager to run LLVM passes to perform analysis 
and transformation; the clang C/C++ front-end and the sc tool in 
SAFECode do this.

I don't know if using a PassManager is what you consider to be "outside 
the existing LLVM framework."  I'm hoping your only objection is to 
using the opt tool to run LLVM passes.

-- John T.

> I have tried several things all along the lines of:
> DominatorTree DT;
> DT.getBase().recalculate(F);
> Everything I have tried results in an assertion failure when trying to 
> access the front() of what I assume is the DominatorTree:
> Assertion failed: !empty() && "Called front() on empty list!"
> If anyone has an example of how to do this, I would really appreciate it.
> Thanks,
> David
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20110729/7fadade8/attachment.html>

More information about the llvm-dev mailing list