Hello I am working on pass which has dependency on multiple passes. Say D1,D2,D3 I used INITIALIZE_PASS_BEGIN INITIALIZE_PASS_DEPENDENCY(D1) INITIALIZE_PASS_DEPENDENCY(D2) INITIALIZE_PASS_DEPENDENCY(D3) INITIALIZE_PASS_END. While running it through opt tool it, I had to specify this D1,D2,D3 pass names to get this pass executed before my pass. Is there way, to let llvm pass manager to know execute all dependencies without having to specify explicitly.? I suspect i am doing something wrong in my code, May be. Thanks Mahesh -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20171003/31ddc6f5/attachment.html>
Hi Mahesh, Did you override getAnalysisUsage and require D1, D2 and D3? void YourPass::getAnalysisUsage(AnalysisUsage &AU) const { AU.addRequired<D1>(); AU.addRequired<D2>(); AU.addRequired<D3>(); } On Tue, Oct 3, 2017 at 2:00 AM, Mahesh Attarde via llvm-dev < llvm-dev at lists.llvm.org> wrote:> Hello > I am working on pass which has dependency on multiple passes. Say > D1,D2,D3 > I used > INITIALIZE_PASS_BEGIN > INITIALIZE_PASS_DEPENDENCY(D1) > INITIALIZE_PASS_DEPENDENCY(D2) > INITIALIZE_PASS_DEPENDENCY(D3) > INITIALIZE_PASS_END. > > While running it through opt tool it, I had to specify this D1,D2,D3 pass > names > to get this pass executed before my pass. > Is there way, to let llvm pass manager to know execute all dependencies > without > having to specify explicitly.? > > I suspect i am doing something wrong in my code, May be. > > Thanks > Mahesh > > _______________________________________________ > 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/20171003/3d4aec7e/attachment.html>
Hi Hongbin I am not quite familiar with AnalysisUsage, let me correct question a bit. I have read Writing Pass <http://llvm.org/docs/WritingAnLLVMPass.html#specifying-interactions-between-passes>, All examples that i see here are based on collecting information .i.e Analysis Passes. I wonder if this applies to Transformation passes also. e.g. void MyInliner::getAnalysisUsage(AnalysisUsage &AU) const { AU.addRequired<SimplifyCFGPass>(); // Transformation Pass AU.addRequired<AnnotatedFunctionPass>(); // Transformation like pass AU.addRequired<CallGraphSCCPass>(); // Analysis Pass } here AnnotateFunctionPass is adding meta information,so technically nothing Functional transformational in module and not Analysis either. Would that be right way? Thanks Mahesh On Tue, Oct 3, 2017 at 9:43 PM, Hongbin Zheng <etherzhhb at gmail.com> wrote:> Hi Mahesh, > > Did you override getAnalysisUsage and require D1, D2 and D3? > > > void YourPass::getAnalysisUsage(AnalysisUsage &AU) const { > AU.addRequired<D1>(); > AU.addRequired<D2>(); > AU.addRequired<D3>(); > } > > On Tue, Oct 3, 2017 at 2:00 AM, Mahesh Attarde via llvm-dev < > llvm-dev at lists.llvm.org> wrote: > >> Hello >> I am working on pass which has dependency on multiple passes. Say >> D1,D2,D3 >> I used >> INITIALIZE_PASS_BEGIN >> INITIALIZE_PASS_DEPENDENCY(D1) >> INITIALIZE_PASS_DEPENDENCY(D2) >> INITIALIZE_PASS_DEPENDENCY(D3) >> INITIALIZE_PASS_END. >> >> While running it through opt tool it, I had to specify this D1,D2,D3 pass >> names >> to get this pass executed before my pass. >> Is there way, to let llvm pass manager to know execute all dependencies >> without >> having to specify explicitly.? >> >> I suspect i am doing something wrong in my code, May be. >> >> Thanks >> Mahesh >> >> _______________________________________________ >> 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/20171003/eac8aacc/attachment.html>
Seemingly Similar Threads
- About LLVM Pass dependency
- Writing tests with Filecheck without emitting output to stdin
- Writing tests with Filecheck without emitting output to stdin
- Writing tests with Filecheck without emitting output to stdin
- Writing tests with Filecheck without emitting output to stdin