[LLVMdev] How can i differentiate pointer type int 32* from int 32** ?

Shen Liu
Sat, 18 Jul 2015 01:32:16 -0000

John, thanks for your helpful advice.

My ultimate goal is to construct a full instruction-level program
dependence graph for a given IR file. The hard point is how to establish
the correct data dependence edges when some function arguments are
multi-level pointers. To solve this problem I hope to check the point-to
level for each pointer variable. I think the data dependence through
pointers can be described more accurately in this way. Unfortunately i
didn't find any available interface to finish this job, so i guess i have
to write it by myself.

Best regards,

Shen



On Fri, Jul 17, 2015 at 2:22 PM, John Criswell <jtcriswel at gmail.com>
wrote:

>  On 7/17/15 1:06 PM, Shen Liu wrote:
>
>  John, thanks for you answer! But as far as I know LLVM doesn't provide
> any interface for finding the pointee of a pointer directly, so i have to
> process a multi-level pointer i need to write my own function to check
> pointers level by level, is that right?
>
>
> I'm not sure what you're trying to do.  If you're trying to
determine the
> LLVM pointer type and the LLVM type to which it points, what I've said
will
> work.
>
> If you're trying to do something more complicated, then you need to
> explain more clearly what you want to do.  I think it would also help if
> you "jumped up a level" and explained what your end goal is so
that the
> community can give you better advice.  Based on your previous emails, it
> seems like you're asking very specific questions instead of asking how
to
> best achieve your overall goal.
>
> Regards,
>
> John Criswell
>
>
>
> On Fri, Jul 17, 2015 at 1:47 PM, John Criswell <jtcriswel at
gmail.com>
> wrote:
>
>>  On 7/17/15 12:38 PM, Shen Liu wrote:
>>
>> Hi all, as a LLVM beginner I would like to know how can i check the
>> pointer types with different levels like int 32* and int 32**, int
32***?
>>
>>  By using value->getType()->isPointerTy() i can just know they
are
>> pointers. But the dump results clearly show they are different. Is
there a
>> good way to calculate their actual point to levels? Thanks!
>>
>>
>>  You will need to use dyn_cast<PointerType> to cast the Type *
into a
>> PointerType *.  Once you do that, you can find the Type * that the
>> PointerType points to.
>>
>> Regards,
>>
>> John Criswell
>>
>>
>>
>>  Best regards,
>>
>>  Shen
>>
>>
>> _______________________________________________
>> LLVM Developers mailing listLLVMdev at cs.uiuc.edu
http://llvm.cs.uiuc.eduhttp://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>>
>>
>>
>> --
>> John Criswell
>> Assistant Professor
>> Department of Computer Science, University of
Rochesterhttp://www.cs.rochester.edu/u/criswell
>>
>>
>
>
> --
> John Criswell
> Assistant Professor
> Department of Computer Science, University of
Rochesterhttp://www.cs.rochester.edu/u/criswell
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.llvm.org/pipermail/llvm-dev/attachments/20150717/06d47dfc/attachment.html>