In updateFromGlobalsGraph, instead of iterating over all of the scalars in the
authorChris Lattner <sabre@nondot.org>
Wed, 28 Jan 2004 03:03:06 +0000 (03:03 +0000)
committerChris Lattner <sabre@nondot.org>
Wed, 28 Jan 2004 03:03:06 +0000 (03:03 +0000)
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.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10996 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Analysis/DataStructure/DataStructure.cpp

index a4038052a7b426c8ad592e4f2f35e872f38b69a6..0e7d3e69b9dbf155e1b2fbdf051dd7d95ddd61a2 100644 (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();