Hi, I have made my optimization as an extension of ModulePass as suggested in last mail. I included "addRequired<CallGraph>" in getAnalysisUsage function. The application compiles fine but while linking, I get following errors: "undefined reference to llvm::CallGraphLinkVar" "undefined reference to llvm::CallGraph::ID The above error is at point where I refer to individual instruction. I followed the conventions used in GlobalModRefPass, which is also an extension of ModulePass. Is there any other convention which needs to be followed? Thanks --Kapil On Wed, Aug 20, 2008 at 1:59 PM, Bill Wendling <isanbard at gmail.com> wrote:> On Wed, Aug 20, 2008 at 9:47 AM, kapil anand <kapilanand2 at gmail.com> > wrote: > > Hi, > > > > I have been working on implementing new analysis for a LLVM module. For > > that, I need that Call Graph of the module. Inside the CallGraph file, > the > > constructor has been declared "protected" hence I can't define its > instance > > and thus use the CallGraph for further analysis. > > > > So, what are the ways of building and using Call Graph of a module. Do I > > need to make my new analysis as another PASS? > > > Yes, you should make it a pass, and then say that that pass requires > call graph information like this: > > AU.addRequired<CallGraph>(); > > The pass manager's responsible for providing that analysis information > for you. See how it's used in other passes for examples. > > -bw > _______________________________________________ > 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/20080821/04d3929e/attachment.html>
On Aug 21, 2008, at 2:20 PM, kapil anand wrote:> Hi, > > I have made my optimization as an extension of ModulePass as > suggested in last mail. I included "addRequired<CallGraph>" in > getAnalysisUsage function. > The application compiles fine but while linking, I get following > errors: > "undefined reference to llvm::CallGraphLinkVar" > "undefined reference to llvm::CallGraph::ID > > The above error is at point where I refer to individual instruction. > I followed the conventions used in GlobalModRefPass, which is also > an extension of ModulePass. Is there any other convention which > needs to be followed? >I would think that that is enough. Where are you adding this module? Is it part of the libLLVMipa.a library? Or is it another library? Make sure that when you link your application, you're analysis is either part of libLLVMipa.a or has that library on the link line. -bw
Hi, I am not making this application part of LLVM library although I do link the libLLVMipa library ( actually I am using llvm-config --libs all option in the Makefile which links all the libraries). Is it necessary to make it part of LLVM library? Thanks for you responses. --Kapil On Fri, Aug 22, 2008 at 3:40 PM, Bill Wendling <isanbard at gmail.com> wrote:> On Aug 21, 2008, at 2:20 PM, kapil anand wrote: > > > Hi, > > > > I have made my optimization as an extension of ModulePass as > > suggested in last mail. I included "addRequired<CallGraph>" in > > getAnalysisUsage function. > > The application compiles fine but while linking, I get following > > errors: > > "undefined reference to llvm::CallGraphLinkVar" > > "undefined reference to llvm::CallGraph::ID > > > > The above error is at point where I refer to individual instruction. > > I followed the conventions used in GlobalModRefPass, which is also > > an extension of ModulePass. Is there any other convention which > > needs to be followed? > > > I would think that that is enough. Where are you adding this module? > Is it part of the libLLVMipa.a library? Or is it another library? Make > sure that when you link your application, you're analysis is either > part of libLLVMipa.a or has that library on the link line. > > -bw > > _______________________________________________ > 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/20080822/ef17343f/attachment.html>