[LLVMdev] problem with analysis required

Kshitiz Garg ksh.cseiitk at gmail.com
Fri May 8 04:07:19 PDT 2009


Hello,
    I was trying to get the loop info in a module pass to be able to
iterate over the loops int the module itself. Since my pass requires
to make module level changes including adding new types to module
hence a looppass cannot be used here.
I am getting the following error on running opt.

opt: /root/llvm-2.4/include/llvm/PassAnalysisSupport.h:199:
AnalysisType& llvm::Pass::getAnalysisID(const llvm::PassInfo*) const
[with AnalysisType = llvm::LoopInfo]: Assertion `ResultPass &&
"getAnalysis*() called on an analysis that was not " "'required' by
pass!"' failed.

<snip_gdb_trace>
#4  0x083006f2 in llvm::Pass::getAnalysisID<llvm::LoopInfo> (this=0x86cfc48,
    PI=0x86cbfe0) at /root/llvm-2.4/include/llvm/PassAnalysisSupport.h:197
#5  0x083007aa in llvm::Pass::getAnalysis<llvm::LoopInfo> (this=0x86cfc48)
    at /root/llvm-2.4/include/llvm/PassAnalysisSupport.h:186
#6  0x0056e1c0 in runOnModule (this=0x86cfc48, M=@0x86cfeb8) at timing.cpp:167
</snip_gdb_trace>
gdb backtrace points to the following statement in the runOnModule method;
Loopinfo * LI = &getAnalysis<LoopInfo>();

following is the content of the getAnalysis Usage method.

 void getAnalysisUsage(AnalysisUsage &AU) const {
            AU.addRequired<LoopInfo> ();
            AU.addPreserved<LoopInfo> ();
}

I picked this from the LPPassManager class which has a similar
structure and its runOnFunction iterates over loop list from LoopInfo.

I think I am missing some line to add. Can someone please point out
the cause of the error??

Thanks
regards,
Kshitiz
--
Kshitiz Garg
Graduate Student
Department of Computer Science & Engineering
IIT Kanpur
http://home.iitk.ac.in/~kshitizg



More information about the llvm-dev mailing list