[LLVMdev] Accessing Dominator Tree

david.dewey at comcast.net david.dewey at comcast.net
Fri Jul 29 08:00:20 PDT 2011



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. 



Thanks, 



David 




----- Original Message -----


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/044d12a7/attachment.html>


More information about the llvm-dev mailing list