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]