[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