[LLVMdev] Wierd behavior from getAnalysis<>

Eugene Toder eltoder at gmail.com
Tue Sep 14 14:17:15 PDT 2010


I think you need to implement getAdjustedAnalysisPointer() in your pass.

Eugene

On Tue, Sep 14, 2010 at 4:40 PM, Pape Sylla <papesylla at gmail.com> wrote:
> Hello,
>
> I am seeing a weird behavior from getAnalysis<>.  I seem to not get back a
> valid object type, which leads to other errors.
>
> when I am executing the following line:
>
> InsertDummyTargsPass& dt = getAnalysis<InsertDummyTargsPass>();
>
> I am apparently getting back an object of type llvm::Pass;
>
> This is how I checked it: with the following code I create the Object print
> its address value and add it to the pass manager
>
>         InsertDummyTargsPass* p =  new InsertDummyTargsPass(bp, ipInfo,
> exeInfo);
>         std::cerr << "dummytargspass :" << p;
>         llvm::Pass* parent = p;
>         std::cerr << "value of parent:" << parent;
>         PM.add(p);
>
> I get from the cerr statement
>
> dummytargspass :0x971acd8
>      value of parent:0x971acf4
>
> In the InsertDummyTargsPass::runOnModule I have the following statement
>
> printf("value of this %x\n", (unsigned int) this);
>
> which gives:
> value of this 971acd8
>
> then I use in a different pass
>
>     InsertDummyTargsPass& dt = getAnalysis<InsertDummyTargsPass>();
>     printf("value of dt*  %x\n", (unsigned int) &dt);
>
> which gives
> value of dt*  971acf4
>
> which suggests that I am getting back a reference of type llvm::Pass instead
> of  InsertDummyTargsPass which is what I wanted. Can anyone tell how to fix
> this issue.
>
>
> Pape
> University of Maryland at College Park
> ECE Department
>
>
>
>
>
>
>
> _______________________________________________
> 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