ambika wrote:> But this is already present in my pass. > And I am not able to understand the cause for the error: >Can you send a copy of your getAnalysisUsage() method for your pass? There are some funny errors that can occur when you do things that the PassManager cannot handle. For example, if you're requiring a transform pass, that can cause strange assertions from the PassManager. Requiring a BasicBlock pass from a FunctionPass might also hit assertions within PassManager (I think). If you post your getAnalysisUsage() method, I can take a quick look to see if you're doing something that I know is unsupported by PassManager. -- John T.> opt: /home/ambika/llvm_3/llvm-2.6/include/llvm/PassAnalysisSupport.h:203: > AnalysisType& llvm::Pass::getAnalysisID(const llvm::PassInfo*) const > [with AnalysisType = llvm::DominatorTree]: Assertion `ResultPass && > "getAnalysis*() called on an analysis that was not " "'required' by > pass!"' failed. > > What can possibly cause this. Any ideas will also help. > > Tobias Grosser wrote: > >> Hi, >> >> you need something like this in your pass: >> >> void YourPass::getAnalysisUsage(AnalysisUsage &AU) const { >> AU.addRequired<DominatorTree>(); >> } >> >> because you need to specify which analysis you are using. >> >> Tobi >> > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >
Here is getAnalysisUsage() i am using, void getAnalysisUsage(AnalysisUsage &AU) const { AU.setPreservesAll(); AU.addRequired<DominatorTree>(); } and then I use it as, bool ptrTest::runOnModule(Module &M) { DominatorTree &DT = getAnalysis<DominatorTree>(); ...... } John Criswell wrote:> ambika wrote: >> But this is already present in my pass. >> And I am not able to understand the cause for the error: >> > > Can you send a copy of your getAnalysisUsage() method for your pass? > There are some funny errors that can occur when you do things that the > PassManager cannot handle. > > For example, if you're requiring a transform pass, that can cause > strange assertions from the PassManager. Requiring a BasicBlock pass > from a FunctionPass might also hit assertions within PassManager (I > think). > > If you post your getAnalysisUsage() method, I can take a quick look to > see if you're doing something that I know is unsupported by PassManager. > > -- John T. > >> opt: >> /home/ambika/llvm_3/llvm-2.6/include/llvm/PassAnalysisSupport.h:203: >> AnalysisType& llvm::Pass::getAnalysisID(const llvm::PassInfo*) const >> [with AnalysisType = llvm::DominatorTree]: Assertion `ResultPass && >> "getAnalysis*() called on an analysis that was not " "'required' by >> pass!"' failed. >> >> What can possibly cause this. Any ideas will also help. >> >> Tobias Grosser wrote: >> >>> Hi, >>> >>> you need something like this in your pass: >>> >>> void YourPass::getAnalysisUsage(AnalysisUsage &AU) const { >>> AU.addRequired<DominatorTree>(); >>> } >>> >>> because you need to specify which analysis you are using. >>> >>> Tobi >>> >> >> _______________________________________________ >> LLVM Developers mailing list >> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >> >
ambika wrote:> Here is getAnalysisUsage() i am using, > > void getAnalysisUsage(AnalysisUsage &AU) const { > AU.setPreservesAll(); > AU.addRequired<DominatorTree>(); > } > > and then I use it as, > > > bool ptrTest::runOnModule(Module &M) { > > DominatorTree &DT = getAnalysis<DominatorTree>(); > ...... > > } >Weird. There is nothing unusual about your getAnalysisUsage() method at all. I assume ptrTest is either a ModulePass or FunctionPass, correct? A few other questions: 1) Is ptrTest part of an analysis group? 2) Does ptrTest has a static ID member whose address is passed into its constructor as a default parameter? The code should look something like this: public : static char ID; ptrTest () : FunctionPass ((intptr_t) &ID) { } -- John T.> John Criswell wrote: > >> ambika wrote: >> >>> But this is already present in my pass. >>> And I am not able to understand the cause for the error: >>> >>> >> Can you send a copy of your getAnalysisUsage() method for your pass? >> There are some funny errors that can occur when you do things that the >> PassManager cannot handle. >> >> For example, if you're requiring a transform pass, that can cause >> strange assertions from the PassManager. Requiring a BasicBlock pass >> from a FunctionPass might also hit assertions within PassManager (I >> think). >> >> If you post your getAnalysisUsage() method, I can take a quick look to >> see if you're doing something that I know is unsupported by PassManager. >> >> -- John T. >> >> >>> opt: >>> /home/ambika/llvm_3/llvm-2.6/include/llvm/PassAnalysisSupport.h:203: >>> AnalysisType& llvm::Pass::getAnalysisID(const llvm::PassInfo*) const >>> [with AnalysisType = llvm::DominatorTree]: Assertion `ResultPass && >>> "getAnalysis*() called on an analysis that was not " "'required' by >>> pass!"' failed. >>> >>> What can possibly cause this. Any ideas will also help. >>> >>> Tobias Grosser wrote: >>> >>> >>>> Hi, >>>> >>>> you need something like this in your pass: >>>> >>>> void YourPass::getAnalysisUsage(AnalysisUsage &AU) const { >>>> AU.addRequired<DominatorTree>(); >>>> } >>>> >>>> because you need to specify which analysis you are using. >>>> >>>> Tobi >>>> >>>> >>> _______________________________________________ >>> LLVM Developers mailing list >>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >>> >>> > >
Maybe Matching Threads
- [LLVMdev] [Fwd: Error while running my pass with opt]
- [LLVMdev] [Fwd: Error while running my pass with opt]
- [LLVMdev] [Fwd: Error while running my pass with opt]
- [LLVMdev] [Fwd: Error while running my pass with opt]
- [LLVMdev] [Fwd: Error while running my pass with opt]