In updateFromGlobalsGraph, instead of iterating over all of the scalars in the

function to find the globals, iterate over all of the globals directly.  This
speeds the function up from 14s to 6.3s on perlbmk, reducing DSA time from
53->46s.

llvm-svn: 10996
This commit is contained in:
Chris Lattner 2004-01-28 03:03:06 +00:00
parent fc239578ad
commit 394c9343b4

View File

@ -1064,14 +1064,13 @@ void DSGraph::updateFromGlobalGraph() {
ReachabilityCloner RC(*this, *GlobalsGraph, 0);
// Clone the non-up-to-date global nodes into this graph.
for (ScalarMapTy::const_iterator I = getScalarMap().begin(),
E = getScalarMap().end(); I != E; ++I)
if (GlobalValue* GV = dyn_cast<GlobalValue>(I->first))
if (InlinedGlobals.count(GV) == 0) { // GNode is not up-to-date
ScalarMapTy::iterator It = GlobalsGraph->ScalarMap.find(GV);
if (It != GlobalsGraph->ScalarMap.end())
RC.merge(I->second, It->second);
}
for (DSScalarMap::global_iterator I = getScalarMap().global_begin(),
E = getScalarMap().global_end(); I != E; ++I)
if (InlinedGlobals.count(*I) == 0) { // GNode is not up-to-date
ScalarMapTy::iterator It = GlobalsGraph->ScalarMap.find(*I);
if (It != GlobalsGraph->ScalarMap.end())
RC.merge(getNodeForValue(*I), It->second);
}
// Merging global nodes leaves behind unused nodes: get rid of them now.
removeTriviallyDeadNodes();