As it turns out, we don't need a fully generic mapping copy ctor, we just need

something that maps through a std::map.  Since this simplified the client and
implementation code, do so now.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4250 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner
2002-10-21 15:04:18 +00:00
parent 448f4949dc
commit 99a22847ba
4 changed files with 70 additions and 56 deletions

View File

@@ -57,8 +57,8 @@ void TDDataStructures::ResolveCallSite(DSGraph &Graph,
// TD ...Merge the formal arg scalar with the actual arg node
DSNodeHandle &NodeForFormal = Graph.getNodeForValue(AI);
if (NodeForFormal.getNode())
NodeForFormal.mergeWith(CallSite.getPtrArg(i));
assert(NodeForFormal.getNode() && "Pointer argument has no dest node!");
NodeForFormal.mergeWith(CallSite.getPtrArg(i));
}
// Merge returned node in the caller with the "return" node in callee
@@ -67,12 +67,6 @@ void TDDataStructures::ResolveCallSite(DSGraph &Graph,
}
static DSNodeHandle copyHelper(const DSNodeHandle* fromNode,
std::map<const DSNode*, DSNode*> *NodeMap) {
return DSNodeHandle((*NodeMap)[fromNode->getNode()], fromNode->getOffset());
}
DSGraph &TDDataStructures::calculateGraph(Function &F) {
// Make sure this graph has not already been calculated, or that we don't get
// into an infinite loop with mutually recursive functions.
@@ -103,12 +97,9 @@ DSGraph &TDDataStructures::calculateGraph(Function &F) {
DEBUG(std::cerr << "\t [TD] Inlining caller #" << c << " '"
<< Caller.getName() << "' into callee: " << F.getName() << "\n");
if (&Caller == &F) {
// Self-recursive call: this can happen after a cycle of calls is inlined.
ResolveCallSite(*Graph, CallSite);
} else {
// Recursively compute the graph for the Caller. That should
// be fully resolved except if there is mutual recursion...
if (&Caller != &F) {
// Recursively compute the graph for the Caller. It should be fully
// resolved except if there is mutual recursion...
//
DSGraph &CG = calculateGraph(Caller); // Graph to inline
@@ -133,10 +124,9 @@ DSGraph &TDDataStructures::calculateGraph(Function &F) {
// Make a temporary copy of the call site, and transform the argument node
// pointers.
DSCallSite TmpCallSite(CallSite, std::bind2nd(std::ptr_fun(&copyHelper),
&OldNodeMap));
ResolveCallSite(*Graph, CallSite);
//
}
ResolveCallSite(*Graph, CallSite);
}
// Recompute the Incomplete markers and eliminate unreachable nodes.