[LLVMdev] Error when using getAnalysis

Devang Patel dpatel at apple.com
Tue Dec 2 12:12:09 PST 2008


Jeff,

Just add !isDeclaration() check before requesting loop info. In your  
example, there is not any way to get loopinfo for printf whose  
definition is not available.

     if (!F.isDeclaration())
       LoopInfo &LI = getAnalysis<LoopInfo>(F);

-
Devang
On Dec 2, 2008, at 11:35 AM, Jeff Yeong-Peng Hao wrote:

> Sure.  I've attached the code for the test pass I wrote, as well as  
> the
> code and bitcode for the testcase I'm running.  All the  
> functionality has
> been stripped out of the pass, and the pass compiles without a  
> problem, but
> the error appears when the pass is run.
>
> Jeff
>
> On Tue, 2 Dec 2008 11:06:44 -0800, Devang Patel <dpatel at apple.com>  
> wrote:
>> On Dec 2, 2008, at 10:40 AM, Jeff Yeong-Peng Hao wrote:
>>
>>>
>>> Hi,
>>>
>>> I had a question about this as well.  The documentation about
>>> writing a
>>> pass shows an example like what John wrote, calling a function pass
>>> within
>>> a module pass on a per function basis.  However, if I code it that
>>> way, I
>>> still get the same error:
>>>
>>> opt: /x/jeffhao/llvm/llvm/include/llvm/PassAnalysisSupport.h:232:
>>> AnalysisType& llvm::Pass::getAnalysisID(const llvm::PassInfo*,
>>> llvm::Function&) [with AnalysisType = llvm::LoopInfo]: Assertion
>>> `ResultPass && "getAnalysis*() called on an analysis that was not "
>>> "'required' by pass!"' failed.
>>>
>>> If I remove the addRequired from getAnalysisUsage, I get this error:
>>>
>>> opt: /x/jeffhao/llvm/llvm-2.4/lib/VMCore/PassManager.cpp:1440:  
>>> virtual
>>> llvm::Pass* llvm::MPPassManager::getOnTheFlyPass(llvm::Pass*, const
>>> llvm::PassInfo*, llvm::Function&): Assertion `FPP && "Unable to find
>>> on the
>>> fly pass"' failed.
>>>
>>> What else needs to be added to make the code run?
>>
>> Is it possible for you to provide a reproducible test case to help us
>> understand what is going on ?
>> Thanks,
>> -
>> Devang
>> _______________________________________________
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
> < 
> ModuleLoop 
> .cpp 
> > 
> < 
> ModuleLoop 
> .h 
> ><simple.c><simple.bc>_______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev




More information about the llvm-dev mailing list