Hi Tim,> From: Tim Creech <tcreech at umd.edu> > Subject: [LLVMdev] IVUsers (LoopPass) analysis in a ModulePass? > Date: September 1, 2011 11:46:28 AM PDT > To: llvmdev at cs.uiuc.edu > > Hi all, > I have a loadable ModulePass which does transformations, and I would like to > use IVUsers analysis within it. I noticed when I try to do this (via > the usual addRequired<IVUsers>() and getAnalysis<IVUsers>(*F)), opt > fails an assert:All LoopPass, including IVUsers, uses runOnLoop(L, LPM) as an external interface to collect loop analysis or transform a loop. This is the hook used by pass manager. In your case getAnalysis<IVUsers>(*F) (where I assume F is a function ptr) is not what IVUsers supports. This works for FunctionPass because pass manager can do runOnFunction(F).> opt: /home/tcreech/build/llvm-2.9/include/llvm/PassAnalysisSupport.h:239: AnalysisType& llvm::Pass::getAnalysisID(const void*, llvm::Function&) [with AnalysisType = llvm::LoopInfo]: Assertion `ResultPass && "Unable to find requested analysis info"' failed. > > ...where I was using LoopInfo analysis without trouble before trying to > run IVUsers analysis as well. I suspect that I'm somehow doing something > that LLVM just doesn't allow. I know that LLVM allows getting > FunctionPass analysis from a ModulePass, but can I also get LoopPass > analysis from a ModulePass?As you can image, this is not something that is supported by current pass manager implement. Are you sure you need LoopPass to run your ModulePass ? Typically, ModulePass work at a module level e.g. inline functions, change function signatures etc.. Why would a ModulePass need a LoopPass analysis ? I am curious. If you're interested in updating pass manager to support your needs then I can give you some hints. - Devang -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20110912/6fa38c65/attachment.html>
Timothy Mattausch Creech
2011-Sep-13 03:23 UTC
[LLVMdev] IVUsers (LoopPass) analysis in a ModulePass?
Hi Devang, Thanks for your reply. In my case it is helpful just to know that what I'm trying is unsupported. You're right that we don't really strictly need this arrangement. Ideally, I think our ModulePass should actually be converted to a LoopPass. I think this is how we'll move forward. Thanks again, Tim On Sep 12, 2011, at 5:41 PM, Devang Patel wrote: Hi Tim, From: Tim Creech <tcreech at umd.edu<mailto:tcreech at umd.edu>> Subject: [LLVMdev] IVUsers (LoopPass) analysis in a ModulePass? Date: September 1, 2011 11:46:28 AM PDT To: llvmdev at cs.uiuc.edu<mailto:llvmdev at cs.uiuc.edu> Hi all, I have a loadable ModulePass which does transformations, and I would like to use IVUsers analysis within it. I noticed when I try to do this (via the usual addRequired<IVUsers>() and getAnalysis<IVUsers>(*F)), opt fails an assert: All LoopPass, including IVUsers, uses runOnLoop(L, LPM) as an external interface to collect loop analysis or transform a loop. This is the hook used by pass manager. In your case getAnalysis<IVUsers>(*F) (where I assume F is a function ptr) is not what IVUsers supports. This works for FunctionPass because pass manager can do runOnFunction(F). opt: /home/tcreech/build/llvm-2.9/include/llvm/PassAnalysisSupport.h:239: AnalysisType& llvm::Pass::getAnalysisID(const void*, llvm::Function&) [with AnalysisType = llvm::LoopInfo]: Assertion `ResultPass && "Unable to find requested analysis info"' failed. ...where I was using LoopInfo analysis without trouble before trying to run IVUsers analysis as well. I suspect that I'm somehow doing something that LLVM just doesn't allow. I know that LLVM allows getting FunctionPass analysis from a ModulePass, but can I also get LoopPass analysis from a ModulePass? As you can image, this is not something that is supported by current pass manager implement. Are you sure you need LoopPass to run your ModulePass ? Typically, ModulePass work at a module level e.g. inline functions, change function signatures etc.. Why would a ModulePass need a LoopPass analysis ? I am curious. If you're interested in updating pass manager to support your needs then I can give you some hints. - Devang -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20110912/25ea62b2/attachment.html>
Seemingly Similar Threads
- [LLVMdev] IVUsers (LoopPass) analysis in a ModulePass?
- [LLVMdev] Why should we have the LoopPass and LoopPassManager? Can we get rid of this complexity?
- [LLVMdev] getAnalysis<LoopInfo> from ModulePass
- IVUsers pass is fragile. Is this okay? How can it be resolved?
- [LLVMdev] Queries of an invalidated AA ModulePass