[LLVMdev] Getting the DSNode from a Pool Descriptor?
Patrick Simmons
simmon12 at illinois.edu
Fri Mar 19 07:56:08 PDT 2010
On 03/19/10 08:56, John Criswell wrote:
> Patrick Simmons wrote:
>> Thanks for all your help so far.
>>
>> My problem is that what I have are the pool descriptors, which I by
>> traversing the uses of poolinit and accessing the first argument of
>> each call. I need to find the DSNode (in the original function) to
>> which this pool descriptor corresponds. The rub is that this pool
>> descriptor of course does not exist except in the clone.
>
> One way to do this might be to search for a use of the pool within the
> function (such as a poolalloc() or a function call that passes the
> pool). You can then find a pointer that belongs to the pool, map that
> pointer from the clone back to the original function, and then look up
> its DSNode.
>
> However, before you do that, can you tell us why you need this
> functionality? Since things are getting complicated, it may be
> worthwhile to first understand if your approach of mapping Pools to
> the DSNodes from which they were created is the correct approach for
> what you are doing. If, for example, you need to know whether a pool
> is a type-homogeneous, then an easier method would be to modify
> poolinit() to pass an argument containing DSNode information (such as
> a flag indicating type-homogeneity).
>
> -- John T.
I've thought of trying to do that, but that solution is really too ugly
to live. I need this because NSPASS (my project) runs after DSA but
before pool allocation and generates a list of DSNodes with a special
property. Then, TPPA (still my project) needs to iterate over every
pool, which it does by iterating over the uses of poolinit, and figure
out whether that pool needs to be annotated in a special way based on
whether the DSNode from whence it came had the special property. To do
this, it needs to convert the pool descriptor it gets by taking the
first argument of poolinit back into the DSNode it used to be and then
check the information from NSPASS to see whether it needs a special
annotation.
Is there a better way to do this?
Thanks,
--Patrick
--
If I'm not here, I've gone out to find myself. If I get back before I return, please keep me here.
More information about the llvm-dev
mailing list