#if 0
// Populate the GlobalsGraph with globals from this one.
Graph->GlobalsGraph->cloneGlobals(*Graph, /*cloneCalls*/ false);
-
- // Save a copy of the original call nodes for the top-down pass
- Graph->saveOrigFunctionCalls();
#endif
// Start resolving calls...
DEBUG(std::cerr << " [BU] Inlining: " << F.getName() << "\n");
-#if 0
- // Add F to the PendingCallers list of each direct callee for use in the
- // top-down pass so we don't have to compute this again. We don't want
- // to do it for indirect callees inlined later, so remember which calls
- // are in the original FCs set.
- std::set<const DSNode*> directCallees;
- for (unsigned i = 0; i < FCs.size(); ++i)
- directCallees.insert(FCs[i][1]); // ptr to function node
-#endif
-
bool Inlined;
do {
Inlined = false;
//
MergeGlobalNodes(*Graph, OldValMap);
-#if 0
- // If this was an original call, add F to the PendingCallers list
- if (directCallees.find(Call[1]) != directCallees.end())
- GI.addCaller(F);
-#endif
-
// Erase the entry in the Callees vector
Callees.erase(Callees.begin()+c--);
}
} while (Inlined && !FCs.empty());
-#if 0
- // Copy any unresolved call nodes into the Globals graph and
- // filter out unresolved call nodes inlined from the callee.
- if (!FCs.empty())
- Graph->GlobalsGraph->cloneCalls(*Graph);
-#endif
-
Graph->maskIncompleteMarkers();
Graph->markIncompleteNodes();
Graph->removeTriviallyDeadNodes(false);
// Copy the function calls list...
CopyFunctionCallsList(G.FunctionCalls, FunctionCalls, OldNodeMap);
-#if 0
- if (CopyOrigCalls)
- CopyFunctionCallsList(G.OrigFunctionCalls, OrigFunctionCalls, OldNodeMap);
-
- // Copy the list of unresolved callers
- if (CopyCallers)
- PendingCallers.insert(G.PendingCallers.begin(), G.PendingCallers.end());
-#endif
-
// Return the returned node pointer...
return DSNodeHandle(OldNodeMap[G.RetNode.getNode()], G.RetNode.getOffset());
}