Riyad Parvez via llvm-dev
2015-Oct-09 14:26 UTC
[llvm-dev] Get instance of CallGraph of a module in the pass
Hello,
I want an instance of CallGraph in my pass. By looking at -dot-callgraph
source, I've tried something like this:
CallGraphWrapperPass *CGWP = new CallGraphWrapperPass();
PM.add(CGWP);
CallGraph *CG = &CGWP->getCallGraph();
PM.add(new MyPass(CG));
I get the following error:
/home/riyad/installs/llvm-3.7.0/include/llvm/PassSupport.h:95:38: error: no
matching constructor for initialization of
'MyPass'
Pass *callDefaultCtor() { return new PassName(); }
My guess is pass manager needs pass with default constructor. Is there any
easy way to get instance of call graph in my pass?
Thanks in Advance,
Riyad
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.llvm.org/pipermail/llvm-dev/attachments/20151009/2a1d278f/attachment.html>
Victor Campos via llvm-dev
2015-Oct-09 14:34 UTC
[llvm-dev] Get instance of CallGraph of a module in the pass
Hi,
you could require the Call Graph pass:
void MyPass::getAnalysisUsage(AnalysisUsage &AU) const
{> ...
> AU.addRequired<CallGraphWrapperPass>();
> }
and then get the result at some point in your pass:
CallGraph &CG = getAnalysis<CallGraphWrapperPass>().getCallGraph();
I believe this works for you.
2015-10-09 11:26 GMT-03:00 Riyad Parvez via llvm-dev <
llvm-dev at lists.llvm.org>:
> Hello,
>
> I want an instance of CallGraph in my pass. By looking at -dot-callgraph
> source, I've tried something like this:
>
> CallGraphWrapperPass *CGWP = new CallGraphWrapperPass();
> PM.add(CGWP);
> CallGraph *CG = &CGWP->getCallGraph();
> PM.add(new MyPass(CG));
>
>
> I get the following error:
>
> /home/riyad/installs/llvm-3.7.0/include/llvm/PassSupport.h:95:38: error:
> no matching constructor for initialization of
> 'MyPass'
> Pass *callDefaultCtor() { return new PassName(); }
>
>
> My guess is pass manager needs pass with default constructor. Is there any
> easy way to get instance of call graph in my pass?
>
> Thanks in Advance,
> Riyad
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.llvm.org/pipermail/llvm-dev/attachments/20151009/e3ddec51/attachment.html>
Riyad Parvez via llvm-dev
2015-Oct-09 14:55 UTC
[llvm-dev] Get instance of CallGraph of a module in the pass
Hi Victor, Thanks! One more question, why "llvm.dbg.declare" and "llvm.dbg.value" are also included in the call graph? These functions are compiler intrinsic for back-end binary generation. Riyad On Fri, Oct 9, 2015 at 10:34 AM, Victor Campos <vhscampos at gmail.com> wrote:> Hi, > > you could require the Call Graph pass: > > void MyPass::getAnalysisUsage(AnalysisUsage &AU) const { >> ... >> AU.addRequired<CallGraphWrapperPass>(); >> } > > > and then get the result at some point in your pass: > > CallGraph &CG = getAnalysis<CallGraphWrapperPass>().getCallGraph(); > > > I believe this works for you. > > 2015-10-09 11:26 GMT-03:00 Riyad Parvez via llvm-dev < > llvm-dev at lists.llvm.org>: > >> Hello, >> >> I want an instance of CallGraph in my pass. By looking at -dot-callgraph >> source, I've tried something like this: >> >> CallGraphWrapperPass *CGWP = new CallGraphWrapperPass(); >> PM.add(CGWP); >> CallGraph *CG = &CGWP->getCallGraph(); >> PM.add(new MyPass(CG)); >> >> >> I get the following error: >> >> /home/riyad/installs/llvm-3.7.0/include/llvm/PassSupport.h:95:38: error: >> no matching constructor for initialization of >> 'MyPass' >> Pass *callDefaultCtor() { return new PassName(); } >> >> >> My guess is pass manager needs pass with default constructor. Is there >> any easy way to get instance of call graph in my pass? >> >> Thanks in Advance, >> Riyad >> >> _______________________________________________ >> LLVM Developers mailing list >> llvm-dev at lists.llvm.org >> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >> >> >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20151009/6f68680e/attachment.html>