Displaying 20 results from an estimated 900 matches similar to: "[LLVMdev] Getting the DSNode from a Pool Descriptor?"
2010 Mar 19
3
[LLVMdev] Getting the DSNode from a Pool Descriptor?
Harmen, your suggestion of inverting the mapping almost worked (and
Andrew was correct that the function I need is the same as the one in
which poolinit appears). Unfortunately, it appears that this mapping
only considers the original function and not any of its clones. Since
the pool descriptor in question may very well only exist in a clone, I
can't use this. Is there another way?
2010 Mar 17
0
[LLVMdev] Getting the DSNode from a Pool Descriptor?
You might want to have a look at PoolAllocate.h.
Per function, a PA::FuncInfo structure keeps track of all DSNodes that
should be pool allocated. ArgNodes contains pool arguments, NodesToPA
contains nodes that are locally pool allocated and thus initialized
using poolinit.
PoolDescriptors contains a mapping from DSNodes to pool descriptors, and
you could easily invert this mapping.
Finding a
2010 Mar 19
3
[LLVMdev] Getting the DSNode from a Pool Descriptor?
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.
If I call getFuncInfo(), I get a
2010 Mar 19
0
[LLVMdev] Getting the DSNode from a Pool Descriptor?
Hi Patrick,
That's right. DSNodes are coupled to the original function. For function clones, you first need
to get the original function, and then use the DSNode from that function. FuncInfo
contains the information if a function is a clone and what the original function is.
If you want to find the corresponding DSNode for some instruction, you must call
PA::FuncInfo::MapValueToOriginal(
2010 Mar 19
0
[LLVMdev] Getting the DSNode from a Pool Descriptor?
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
2010 Mar 17
1
[LLVMdev] Getting the DSNode from a Pool Descriptor?
Depending on the value of dsa_pass_to_use, either EquivBUDataStructures
or EQTDDataStructures is used. In the case that the top-down DSA is
used, information is pushed down to nodes in callees. However,
if bottom-up DSA is used, information has only been merged upwards and
the nodes are not necessarily equivalent.
Harmen
Andrew Lenharth wrote:
> On Tue, Mar 16, 2010 at 3:46 PM, Patrick
2010 Mar 19
1
[LLVMdev] Getting the DSNode from a Pool Descriptor?
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
2010 Mar 17
0
[LLVMdev] Getting the DSNode from a Pool Descriptor?
On Tue, Mar 16, 2010 at 3:46 PM, Patrick Alexander Simmons
<simmon12 at cs.uiuc.edu> wrote:
> I figure (hopefully correctly) that I can iterate over all pool
> descriptors in a program by iterating over all users of poolinit and
> looking at the first argument. However, once I have a pool descriptor,
> I need to get its corresponding DSNode in the function in which it is
>
2009 Nov 13
1
[LLVMdev] Poolalloc asserts when passing in pool descriptors
Hi,
The poolalloc library fails in TransformFunctionBody.cpp, line 746
---
Value *ArgVal = ConstantAggregateZero::get(PoolAllocate::PoolDescPtrTy);
---
opt -load /path_to_lib/libpoolalloc.dylib -poolalloc constaggr.bc -o
opt.bc -f
triggers the problem (bc file attached).
Assertion failed: ((isa<StructType>(Ty) || isa<ArrayType>(Ty) ||
isa<VectorType>(Ty)) &&
2009 May 29
1
[LLVMdev] DSA nodes do not get merged
Hi all,
I just ran into a strange problem. When using the Equivalence-class
Bottom-up Data Structure Analysis pass and pool allocation, I noticed
some objects using different pool descriptors where I expected them to
be in the same pool. We use svn revision 66285 of the DSA.
The following 2 programs expose the problem. First the version that runs
correctly, ie. producing a single DSNode.
2002 Nov 10
2
[LLVMdev] Find mallocs from a DSNode
Is there some efficient way to find the malloc instructions which point
to the memory represented by a DSNode? Right now the only way I see is
by iterating through the value map in the DSGraph object and finding
every value that points to my DSNode.
A possibly related question: is there a way to tell that the node has
been merged, and if so, what types of nodes went into the merge?
Thanks,
2002 Dec 06
2
[LLVMdev] DSNode Question
LLVM,
I am trying to equate two dsnodes across call boundries. On the Caller
side we have an operand of form:
sbyte * getelementptr ([20 x sbyte]* %.LC0, long 0, long 0)
using getNodeForValue() yields a NULL pointer.
On the Callee, the parameter is of form:
sbyte * S
and getNodeForValue works fine. Is there something special that must be
done to access DNodes accessed using GEP?
Thanks,
2002 Nov 10
2
[LLVMdev] Find mallocs from a DSNode
Chris Lattner wrote:
> > Is there some efficient way to find the malloc instructions which point
> > to the memory represented by a DSNode? Right now the only way I see is
> > by iterating through the value map in the DSGraph object and finding
> > every value that points to my DSNode.
>
> You're right, you have to iterate over the program, looking to see what
2009 Aug 28
1
[LLVMdev] DSNodes for main() neither complete nor global?
Hi,
I'm noticing that there are some DSNodes in main() that are neither
complete nor global. Specifically, a heap DSNode that is used but not
free()d in main() is not marked complete. This is not the only case I'm
noticing, but it's the only case I'm noticing for nodes that are
actually used by instructions in the function.
Is this expected behavior? If so, is there an
2009 Aug 07
2
[LLVMdev] DSA getNodeForValue() Returning NULL Sometimes
Andrew Lenharth wrote:
> On Fri, Aug 7, 2009 at 4:45 PM, Patrick Alexander
> Simmons<simmon12 at cs.uiuc.edu> wrote:
>
>> I'm iterating over all LoadInst and StoreInst-type Instructions in a
>> Function, and getNodeForValue() is sometimes returning NULL. Why is
>> this happening? Shouldn't every load from or store to memory correspond
>> to some
2009 Jun 08
2
[LLVMdev] Pool Allocation and DSA
I don't really have a specific question, but, as I've been looking
through pool allocation and the DS graphs extensively, I wanted to
verify that my understanding of the representations used is correct.
Therefore, I'm summarizing my understanding below (which, if it's
correct, may hopefully be helpful to others). I would appreciate if
someone who understands pool allocation
2016 Dec 17
2
How to ask MustAlias queries from DSA results
Hello, everyone!
I'm writing an automatic memory leak fixing tool recently. For my task, I'm using the DSA (Data Structure Analysis) for alias analysis. In my task, when I detect a memory leak, I need to find a pointer (in C) 'must-alias' with the corresponding resource.
In DSA, I think if two Value* point to the same DSNode, they 'may-alias'. If two Value* point to
2009 Aug 07
2
[LLVMdev] DSA getNodeForValue() Returning NULL Sometimes
John Criswell wrote:
> You can sometimes get NULL DSNodes if a previously-run transform pass
> adds pointers to the program but doesn't update DSA while claiming to
> preserve it. The pool allocation pass, for example, does this: it
> claims to preserve the DSA results (when used for SAFECode) but doesn't
> properly update the DSGraph when it adds pool handles. Therefore,
2002 Dec 02
1
[LLVMdev] DSnode type question
Hi, Chris,
I was wondering if you had a chance to look at this problem. Could
you let me know how to decide if this is a heap node in this case? It's
important because my code depends on this information.
Thanks,
Jerry
On Thu, 21 Nov 2002, Chris Lattner wrote:
> > When I use analyze to construct the DSGraph for the lists.c program in
> > test/Programs/SingleSource/Shootout
2002 Nov 24
4
[LLVMdev] globals in DS graph
I have some questions regarding how globals are represented in DS graph.
Specifically, I wrote the following simple program:
List *g;
void alloc_func(){
g = ( List* ) malloc( sizeof( List ) );
}
void free_func(){
free( g );
}
int main(){
alloc_func();
free_func();
}
I noticed that the DSnode for g in alloc_func is different from that of
free_func and NEITHER of them had GlobalNode