[LCG] Switch the SCC lookup to be in terms of call graph nodes rather
than functions. So far, this access pattern is *much* more common. It
seems likely that any user of this interface is going to have nodes at
the point that they are querying the SCCs.

No functionality changed.

llvm-svn: 207045
diff --git a/llvm/lib/Analysis/LazyCallGraph.cpp b/llvm/lib/Analysis/LazyCallGraph.cpp
index 4ad6375..d317938 100644
--- a/llvm/lib/Analysis/LazyCallGraph.cpp
+++ b/llvm/lib/Analysis/LazyCallGraph.cpp
@@ -141,7 +141,7 @@
   bool HasOtherCallOutsideSCC = false;
   for (Node *N : *this) {
     for (Node *Callee : *N) {
-      SCC *OtherCalleeC = G.SCCMap.lookup(&Callee->F);
+      SCC *OtherCalleeC = G.SCCMap.lookup(Callee);
       if (OtherCalleeC == &CalleeC) {
         HasOtherCallToCalleeC = true;
         break;
@@ -237,7 +237,7 @@
         Node *ChildN = *I;
         // If this child isn't currently in this SCC, no need to process it.
         // However, we do need to remove this SCC from its SCC's parent set.
-        SCC *ChildSCC = G.SCCMap.lookup(&ChildN->F);
+        SCC *ChildSCC = G.SCCMap.lookup(ChildN);
         assert(ChildSCC &&
                "Everything reachable must already be in *some* SCC");
         if (ChildSCC != this) {
@@ -296,7 +296,7 @@
     for (Node *ChildN : *N) {
       if (NewNodes.count(ChildN))
         continue;
-      SCC *ChildSCC = G.SCCMap.lookup(&ChildN->getFunction());
+      SCC *ChildSCC = G.SCCMap.lookup(ChildN);
       assert(ChildSCC &&
              "Must have all child SCCs processed when building a new SCC!");
       ChildSCC->ParentSCCs.insert(this);
@@ -331,7 +331,7 @@
   CallerN.Callees.erase(CallerN.Callees.begin() + IndexMapI->second);
   CallerN.CalleeIndexMap.erase(IndexMapI);
 
-  SCC *CallerC = SCCMap.lookup(&CallerN.F);
+  SCC *CallerC = SCCMap.lookup(&CallerN);
   if (!CallerC) {
     // We can only remove edges when the edge isn't actively participating in
     // a DFS walk. Either it must have been popped into an SCC, or it must not
@@ -347,7 +347,7 @@
   assert(CalleeN && "If the caller is in an SCC, we have to have explored all "
                     "its transitively called functions.");
 
-  SCC *CalleeC = SCCMap.lookup(&Callee);
+  SCC *CalleeC = SCCMap.lookup(CalleeN);
   assert(CalleeC &&
          "The caller has an SCC, and thus by necessity so does the callee.");
 
@@ -395,7 +395,7 @@
            "We cannot have a low link in an SCC lower than its root on the "
            "stack!");
 
-    SCCMap[&SCCN->getFunction()] = NewSCC;
+    SCCMap[SCCN] = NewSCC;
     NewSCC->Nodes.push_back(SCCN);
     bool Inserted =
         NewSCC->NodeSet.insert(&SCCN->getFunction());
@@ -412,7 +412,7 @@
     for (Node *SCCChildN : *SCCN) {
       if (NewSCC->NodeSet.count(&SCCChildN->getFunction()))
         continue;
-      SCC *ChildSCC = SCCMap.lookup(&SCCChildN->getFunction());
+      SCC *ChildSCC = SCCMap.lookup(SCCChildN);
       assert(ChildSCC &&
              "Must have all child SCCs processed when building a new SCC!");
       ChildSCC->ParentSCCs.insert(NewSCC);
@@ -443,7 +443,7 @@
   if (SI->first->DFSNumber == 0) {
     // This node hasn't been visited before, assign it a DFS number and remove
     // it from the entry set.
-    assert(!SCCMap.count(&SI->first->getFunction()) &&
+    assert(!SCCMap.count(SI->first) &&
            "Found a node with 0 DFS number but already in an SCC!");
     SI->first->LowLink = SI->first->DFSNumber = NextDFSNumber++;
     SCCEntryNodes.remove(&SI->first->getFunction());