Alireza.Moshtaghi at microchip.com
2009-Aug-06 22:32 UTC
[LLVMdev] Call Graph Analysis and function cloning
I need to perform call graph analysis (after all modules are merged) to find which function calls which, and depending on the attributes that each function has and what functions call it, I may need to clone it and modify some of calls to that function to call the cloned function. Currently we are doing this in few acrobatic moves that span from an llvm-ld pass (to do call graph analysis) all the way to AsmPrinter (to clone the function) and eventually our in-house linker (to check for some irregularities). But I don't like it at all and I'm sure we will run into problems later. So I would like to see if anybody has a better answer for us. I guess the most important question is how best (if possible) can I clone a function before or during codegen. Currently we are cloning the function in AsmPrinter but it does not look good to me. Any thoughts? Alireza Moshtaghi Senior Software Engineer Development Systems, Microchip Technology
Alireza.Moshtaghi at microchip.com wrote:> I need to perform call graph analysis (after all modules are merged) to > find which function calls which, and depending on the attributes that > each function has and what functions call it, I may need to clone it and > modify some of calls to that function to call the cloned function. > > Currently we are doing this in few acrobatic moves that span from an > llvm-ld pass (to do call graph analysis) all the way to AsmPrinter (to > clone the function) and eventually our in-house linker (to check for > some irregularities). But I don't like it at all and I'm sure we will > run into problems later. So I would like to see if anybody has a better > answer for us. > > I guess the most important question is how best (if possible) can I > clone a function before or during codegen.#include "llvm/Transforms/Utils/Cloning.h" DenseMap<const Value *, Value *> ValueMap; Function *NewF = llvm::CloneFunction(F, ValueMap); Nick> Currently we are cloning the function in AsmPrinter but it does not look > good to me. > > Any thoughts? > > Alireza Moshtaghi > Senior Software Engineer > Development Systems, Microchip Technology > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >
Hi Ali, I assume this is primarily for interrupt function handling? If so, I have a few ideas to bounce your direction if you're interested. -j On Aug 6, 2009, at 3:32 PM, Alireza.Moshtaghi at microchip.com wrote:> I need to perform call graph analysis (after all modules are merged) > to > find which function calls which, and depending on the attributes that > each function has and what functions call it, I may need to clone it > and > modify some of calls to that function to call the cloned function. > > Currently we are doing this in few acrobatic moves that span from an > llvm-ld pass (to do call graph analysis) all the way to AsmPrinter (to > clone the function) and eventually our in-house linker (to check for > some irregularities). But I don't like it at all and I'm sure we will > run into problems later. So I would like to see if anybody has a > better > answer for us. > > I guess the most important question is how best (if possible) can I > clone a function before or during codegen. > Currently we are cloning the function in AsmPrinter but it does not > look > good to me. > > Any thoughts? > > Alireza Moshtaghi > Senior Software Engineer > Development Systems, Microchip Technology > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
Alireza.Moshtaghi at microchip.com
2009-Aug-07 18:07 UTC
[LLVMdev] Call Graph Analysis and function cloning
Hi Jim, Yes these are for interrupt handling. I have always learned from you and of course would like to know about your input. Thanks Ali> -----Original Message----- > From: Jim Grosbach [mailto:grosbach at apple.com] > Sent: Friday, August 07, 2009 11:01 AM > To: LLVM Developers Mailing List > Cc: Alireza Moshtaghi - C13012 > Subject: Re: [LLVMdev] Call Graph Analysis and function cloning > > Hi Ali, > > I assume this is primarily for interrupt function handling? If so, I > have a few ideas to bounce your direction if you're interested. > > -j > > > On Aug 6, 2009, at 3:32 PM, Alireza.Moshtaghi at microchip.com wrote: > > > I need to perform call graph analysis (after all modules are merged) > > to > > find which function calls which, and depending on the attributesthat> > each function has and what functions call it, I may need to clone it > > and > > modify some of calls to that function to call the cloned function. > > > > Currently we are doing this in few acrobatic moves that span from an > > llvm-ld pass (to do call graph analysis) all the way to AsmPrinter(to> > clone the function) and eventually our in-house linker (to check for > > some irregularities). But I don't like it at all and I'm sure wewill> > run into problems later. So I would like to see if anybody has a > > better > > answer for us. > > > > I guess the most important question is how best (if possible) can I > > clone a function before or during codegen. > > Currently we are cloning the function in AsmPrinter but it does not > > look > > good to me. > > > > Any thoughts? > > > > Alireza Moshtaghi > > Senior Software Engineer > > Development Systems, Microchip Technology > > > > _______________________________________________ > > LLVM Developers mailing list > > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev