diff --git a/include/llvm/Analysis/DataStructure/DSGraph.h b/include/llvm/Analysis/DataStructure/DSGraph.h index 3f93d6112df..8eef33ac634 100644 --- a/include/llvm/Analysis/DataStructure/DSGraph.h +++ b/include/llvm/Analysis/DataStructure/DSGraph.h @@ -444,16 +444,11 @@ public: void computeCalleeCallerMapping(DSCallSite CS, const Function &Callee, DSGraph &CalleeGraph, NodeMapTy &NodeMap); - /// cloneInto - Clone the specified DSGraph into the current graph. The - /// translated ScalarMap for the old function is filled into the OldValMap - /// member, and the translated ReturnNodes map is returned into ReturnNodes. - /// OldNodeMap contains a mapping from the original nodes to the newly cloned - /// nodes. + /// cloneInto - Clone the specified DSGraph into the current graph. /// /// The CloneFlags member controls various aspects of the cloning process. /// - void cloneInto(const DSGraph &G, NodeMapTy &OldNodeMap, - unsigned CloneFlags = 0); + void cloneInto(const DSGraph &G, unsigned CloneFlags = 0); /// getFunctionArgumentsForCall - Given a function that is currently in this /// graph, return the DSNodeHandles that correspond to the pointer-compatible diff --git a/lib/Analysis/DataStructure/BottomUpClosure.cpp b/lib/Analysis/DataStructure/BottomUpClosure.cpp index acb4b300f94..0a9994c4116 100644 --- a/lib/Analysis/DataStructure/BottomUpClosure.cpp +++ b/lib/Analysis/DataStructure/BottomUpClosure.cpp @@ -267,10 +267,8 @@ unsigned BUDataStructures::calculateGraphs(Function *F, E = SCCGraphs.end(); I != E; ++I) { DSGraph &G = **I; if (&G != SCCGraph) { - { - DSGraph::NodeMapTy NodeMap; - SCCGraph->cloneInto(G, NodeMap); - } + SCCGraph->cloneInto(G); + // Update the DSInfo map and delete the old graph... for (DSGraph::retnodes_iterator I = G.retnodes_begin(), E = G.retnodes_end(); I != E; ++I) @@ -412,8 +410,7 @@ void BUDataStructures::calculateGraph(DSGraph &Graph) { // If the graph already contains the nodes for the function, don't // bother merging it in again. if (!GI->containsFunction(*I)) { - DSGraph::NodeMapTy NodeMap; - GI->cloneInto(getDSGraph(**I), NodeMap); + GI->cloneInto(getDSGraph(**I)); ++NumBUInlines; } diff --git a/lib/Analysis/DataStructure/CompleteBottomUp.cpp b/lib/Analysis/DataStructure/CompleteBottomUp.cpp index 7b7e62f8d09..103c6bf5392 100644 --- a/lib/Analysis/DataStructure/CompleteBottomUp.cpp +++ b/lib/Analysis/DataStructure/CompleteBottomUp.cpp @@ -175,10 +175,7 @@ unsigned CompleteBUDataStructures::calculateSCCGraphs(DSGraph &FG, DSGraph *NG = Stack.back(); ValMap[NG] = ~0U; - { - DSGraph::NodeMapTy NodeMap; - FG.cloneInto(*NG, NodeMap); - } + FG.cloneInto(*NG); // Update the DSInfo map and delete the old graph... for (DSGraph::retnodes_iterator I = NG->retnodes_begin(); diff --git a/lib/Analysis/DataStructure/DataStructure.cpp b/lib/Analysis/DataStructure/DataStructure.cpp index f76811a874e..b190b9205c2 100644 --- a/lib/Analysis/DataStructure/DataStructure.cpp +++ b/lib/Analysis/DataStructure/DataStructure.cpp @@ -1168,8 +1168,7 @@ DSGraph::DSGraph(const DSGraph &G, EquivalenceClasses &ECs, unsigned CloneFlags) : GlobalsGraph(0), ScalarMap(ECs), TD(G.TD) { PrintAuxCalls = false; - NodeMapTy NodeMap; - cloneInto(G, NodeMap, CloneFlags); + cloneInto(G, CloneFlags); } DSGraph::~DSGraph() { @@ -1235,12 +1234,12 @@ DSNode *DSGraph::addObjectToGraph(Value *Ptr, bool UseDeclaredType) { /// /// The CloneFlags member controls various aspects of the cloning process. /// -void DSGraph::cloneInto(const DSGraph &G, NodeMapTy &OldNodeMap, - unsigned CloneFlags) { +void DSGraph::cloneInto(const DSGraph &G, unsigned CloneFlags) { TIME_REGION(X, "cloneInto"); - assert(OldNodeMap.empty() && "Returned OldNodeMap should be empty!"); assert(&G != this && "Cannot clone graph into itself!"); + NodeMapTy OldNodeMap; + // Remove alloca or mod/ref bits as specified... unsigned BitsToClear = ((CloneFlags & StripAllocaBit)? DSNode::AllocaNode : 0) | ((CloneFlags & StripModRefBits)? (DSNode::Modified | DSNode::Read) : 0) diff --git a/lib/Analysis/DataStructure/EquivClassGraphs.cpp b/lib/Analysis/DataStructure/EquivClassGraphs.cpp index a778d94c58a..7632200b83e 100644 --- a/lib/Analysis/DataStructure/EquivClassGraphs.cpp +++ b/lib/Analysis/DataStructure/EquivClassGraphs.cpp @@ -270,8 +270,7 @@ void EquivClassGraphs::buildIndirectFunctionSets(Module &M) { } // Clone this member of the equivalence class into MergedG. - DSGraph::NodeMapTy NodeMap; - MergedG.cloneInto(CBUGraph, NodeMap); + MergedG.cloneInto(CBUGraph); } // Merge the return nodes of all functions together. @@ -362,10 +361,7 @@ processSCC(DSGraph &FG, std::vector &Stack, unsigned &NextID, // If the SCC found is not the same as those found in CBU, make sure to // merge the graphs as appropriate. - { - DSGraph::NodeMapTy NodeMap; - FG.cloneInto(*NG, NodeMap); - } + FG.cloneInto(*NG); // Update the DSInfo map and delete the old graph... for (DSGraph::retnodes_iterator I = NG->retnodes_begin(); diff --git a/lib/Analysis/DataStructure/Steensgaard.cpp b/lib/Analysis/DataStructure/Steensgaard.cpp index 734f26bbd29..17863d1ce0b 100644 --- a/lib/Analysis/DataStructure/Steensgaard.cpp +++ b/lib/Analysis/DataStructure/Steensgaard.cpp @@ -123,10 +123,8 @@ bool Steens::runOnModule(Module &M) { // into this graph. // for (Module::iterator I = M.begin(), E = M.end(); I != E; ++I) - if (!I->isExternal()) { - DSGraph::NodeMapTy NodeMap; - ResultGraph->cloneInto(LDS.getDSGraph(*I), NodeMap, 0); - } + if (!I->isExternal()) + ResultGraph->cloneInto(LDS.getDSGraph(*I)); ResultGraph->removeTriviallyDeadNodes();