Dear LLVM,
When I use analyze to construct the DSGraph for the lists.c program in
test/Programs/SingleSource/Shootout directory. I found out the heap node
in the function test_list() all have type FOLDED:R. I was wondering why
it's not heapnode anymore? My pass need to use this type information to
determine whether a node is heap node. Is there any way I can know this is
a heap node in this case?
Thanks,
xiaodong
When I use analyze to construct the DSGraph for the lists.c program in
test/Programs/SingleSource/Shootout directory. I found out the heap node
in the function test_list() all have type FOLDED:R. I was wondering why
it's not heapnode anymore? My pass need to use this type information to
determine whether a node is heap node. Is there any way I can know this is
a heap node in this case?
Folded nodes are nodes where the type information in LLVM isn't good
enough to distinguish fields, therefore we need to fold the nodes to be
conservatively correct, even though doing so loses field sensitivity.
Pointer/Alias analysis is an undecidable problem, so all [sound] analyses
must have some way to represent conservativism. This is one of the ways
that the DSGraphs do it. In this case, your pass should do something
conservative.
Despite this, we should not be tossing away the type of memory object it
is (ie heap allocation). I will look into this tommorow to see what is
going on.
-Chris
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
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 for reminding me, I forgot. I don't see any folded nodes for the
lists.c/test_list function. Furthermore, I checked out
DSNode::foldNodeCompletely, and it doesn't remove any flags. Can you give
me more details about when you see this problem?
-Chris