[LLVMdev] How to recognize pointer variable & ordinary variable

Duncan Sands baldrick at free.fr
Wed Jul 21 13:12:02 PDT 2010


Hi Soumya_Prasad_Ukil,

> Your last statement is correct. But still my stand does not change. I
> want to differentiate ordinary local variable & pointer variables.
> Let's have a program,
> int a,b,c,*ptr;

This is not LLVM IR.

> I want to extract only the local variables. That's what my question was.
> I think it is clear now. cast<PointerType>(A->getType()
>
>     )->getElementType() is not working.

I should have said: 
isa<PointerType>(cast<PointerType>(A->getType())->getElementType())
(forgot the pointer type test)

I am also getting error with
>     A->getAllocatedType().

If you look closely you will see I said you can do this with an alloca
instruction.  It will not compile if you have something else.  If you only\
have a Value*, you can do this: 
isa<PointerType>(cast<AllocaInst>(V)->getAllocatedType())

Ciao,

Duncan.

>
>
>
>
> On 22 July 2010 01:01, Duncan Sands <baldrick at free.fr
> <mailto:baldrick at free.fr>> wrote:
>
>     Hi Soumya_Prasad_Ukil,
>
>      > How to recognize pointer variable & ordinary variable? I have
>     tried with
>      > "isa<PointerType>(V->getType())", but failed.
>
>     I'm not sure what you are asking, but if you are asking whether an
>     alloca instruction A represents local memory of pointer type, you
>     can use A->getAllocatedType().  You can also use
>     cast<PointerType>(A->getType())->getElementType().  The reason that
>     an alloca instruction always has pointer type is that the instruction
>     represents a pointer to the allocated memory.
>
>     Ciao,
>
>     Duncan.
>     _______________________________________________
>     LLVM Developers mailing list
>     LLVMdev at cs.uiuc.edu <mailto:LLVMdev at cs.uiuc.edu> http://llvm.cs.uiuc.edu
>     http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
>
>
>
> --
> regards,
> soumya prasad ukil




More information about the llvm-dev mailing list