[LLVMdev] Accessing Dominator Tree
John Criswell
criswell at illinois.edu
Fri Jul 29 08:04:10 PDT 2011
On 7/29/11 10:00 AM, david.dewey at comcast.net wrote:
>
> John,
>
> Thanks for the quick reply. Using a PassManager object should work
> fine. As you said, my only objection is to exec'ing opt.
>
> I had actually tried instantiating a PassManager object before, but I
> was definitely not doing it right. I will take a look at how clang
> and SAFECode use it, and see if I can get it working.
>
The SAFECode sc tool is based on opt, so you can just see what opt
does. Clang does something weird with the PassManager object (I think),
so I recommend looking at opt or sc over clang.
-- John T.
> Thanks,
>
> David
>
>
> ------------------------------------------------------------------------
>
> *From: *"John Criswell" <criswell at illinois.edu>
> *To: *"david dewey" <david.dewey at comcast.net>
> *Cc: *llvmdev at cs.uiuc.edu
> *Sent: *Friday, July 29, 2011 10:56:20 AM
> *Subject: *Re: [LLVMdev] Accessing Dominator Tree
>
> 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/20445425/attachment.html>
More information about the llvm-dev
mailing list