Support resolving function arguments/return values to pointers that index

into other objects.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2094 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2002-04-01 22:20:48 +00:00
parent 85e1e9c22f
commit a13d6ceed7

View File

@ -18,11 +18,21 @@
// Make all of the pointers that point to Val also point to N.
//
static void copyEdgesFromTo(PointerVal Val, DSNode *N) {
assert(Val.Index == 0 && "copyEdgesFromTo:index != 0 TODO");
unsigned ValIdx = Val.Index;
unsigned NLinks = N->getNumLinks();
const vector<PointerValSet*> &PVSToUpdate(Val.Node->getReferrers());
for (unsigned i = 0, e = PVSToUpdate.size(); i != e; ++i)
PVSToUpdate[i]->add(N); // TODO: support index
const vector<PointerValSet*> &PVSsToUpdate(Val.Node->getReferrers());
for (unsigned i = 0, e = PVSsToUpdate.size(); i != e; ++i) {
// Loop over all of the pointers pointing to Val...
PointerValSet &PVS = *PVSsToUpdate[i];
for (unsigned j = 0, je = PVS.size(); j != je; ++j) {
if (PVS[j].Node == Val.Node && PVS[j].Index >= ValIdx &&
PVS[j].Index < ValIdx+NLinks)
PVS.add(PointerVal(N, PVS[j].Index-ValIdx));
//PVS.add(PointerVal(N, Val.Index)); // TODO: support index
}
}
}
static void ResolveNodesTo(const PointerVal &FromPtr,