kapil anand
2009-Feb-12 02:05 UTC
[LLVMdev] DominatorTree Information required in CallGraphPass
Hi all, I am implementing a new pass for LLVM which extends Call Graph SCCPass. I need DominatorTree Information when I get to individual function. I have added AU.addrequired<DominatorTree>() and AU.addRequired<DominanceFrontier>() in getAnalysisUsage() function. But, when I get to the pass, Pass Manager gives following runtime error Unable to schedule 'Dominator Tree Construction' required by '......' assertion "0 && "Unable to schedule pass"" failed: file "/usr/src/llvm-2.4/llvm- 2.4/lib/VMCore/PassManager.cpp", line 1074 Can't I use dominator Tree Information in case of CallGraphSCCPass. I found out from documentation that dominator Info can be used in Module Pass ( http://www.llvm.org/docs/WritingAnLLVMPass.html#getAnalysis ) Thus it seemed feasible that Call GraphSCCPass should also be able to use Dominator Info.Do I need to add some flag that I need lower level passes? Thanks Regards, Kapil
Devang Patel
2009-Feb-12 18:33 UTC
[LLVMdev] DominatorTree Information required in CallGraphPass
On Feb 11, 2009, at 6:05 PM, kapil anand wrote:> Hi all, > > I am implementing a new pass for LLVM which extends Call Graph > SCCPass. I need DominatorTree Information when I get to individual > function. I have added AU.addrequired<DominatorTree>() and > AU.addRequired<DominanceFrontier>() in getAnalysisUsage() function.> > But, when I get to the pass, Pass Manager gives following runtime > error > > > Unable to schedule 'Dominator Tree Construction' required by '......' > > assertion "0 && "Unable to schedule pass"" failed: file "/usr/src/ > llvm-2.4/llvm- > 2.4/lib/VMCore/PassManager.cpp", line 1074 > > > Can't I use dominator Tree Information in case of CallGraphSCCPass. I > found out from documentation that dominator Info can be used in Module > Pass > > ( http://www.llvm.org/docs/WritingAnLLVMPass.html#getAnalysis ) > > Thus it seemed feasible that Call GraphSCCPass should also be able to > use Dominator Info.Do I need to add some flag that I need lower level > passes?Pl. file a bugzilla report. Call graph pass manager is not implementing addLowerLevelRequiredPass() to support this. If you copy the same method from MPPassManager (see Pasmanager.cpp) then it should work. If it works, please send us patch. Thanks,> > > Thanks > > Regards, > Kapil > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev- Devang
kapil anand
2009-Feb-12 22:46 UTC
[LLVMdev] DominatorTree Information required in CallGraphPass
I have modified my pass to extend Module Pass instead of Call Graph SCCPass. I insert getAnalyses<CallGraph> and use this explicitly instead of extending CallGraphSCCPass. So, the above change need not be made to get my pass work....( as of now) On Thu, Feb 12, 2009 at 1:33 PM, Devang Patel <dpatel at apple.com> wrote:> > On Feb 11, 2009, at 6:05 PM, kapil anand wrote: > > > Hi all, > > > > I am implementing a new pass for LLVM which extends Call Graph > > SCCPass. I need DominatorTree Information when I get to individual > > function. I have added AU.addrequired<DominatorTree>() and > > AU.addRequired<DominanceFrontier>() in getAnalysisUsage() function. > > > > > But, when I get to the pass, Pass Manager gives following runtime > > error > > > > > > Unable to schedule 'Dominator Tree Construction' required by '......' > > > > assertion "0 && "Unable to schedule pass"" failed: file "/usr/src/ > > llvm-2.4/llvm- > > 2.4/lib/VMCore/PassManager.cpp", line 1074 > > > > > > Can't I use dominator Tree Information in case of CallGraphSCCPass. I > > found out from documentation that dominator Info can be used in Module > > Pass > > > > ( http://www.llvm.org/docs/WritingAnLLVMPass.html#getAnalysis ) > > > > Thus it seemed feasible that Call GraphSCCPass should also be able to > > use Dominator Info.Do I need to add some flag that I need lower level > > passes? > > Pl. file a bugzilla report. Call graph pass manager is not > implementing addLowerLevelRequiredPass() to support this. If you copy > the same method from MPPassManager (see Pasmanager.cpp) then it should > work. If it works, please send us patch. > > Thanks, > > > > > > Thanks > > > > Regards, > > Kapil > > _______________________________________________ > > LLVM Developers mailing list > > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev > > - > Devang > > > > _______________________________________________ > 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/20090212/f3b6e9ab/attachment.html>