[LCG] Make the insertion and query paths into the LCG which cannot fail
authorChandler Carruth <chandlerc@gmail.com>
Wed, 23 Apr 2014 23:20:36 +0000 (23:20 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Wed, 23 Apr 2014 23:20:36 +0000 (23:20 +0000)
return references to better model this property.

No functionality changed.

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

include/llvm/Analysis/LazyCallGraph.h
lib/Analysis/LazyCallGraph.cpp

index 0bbf591a6c662e22d34e079122eaf44f858382ec..1b0e1dbf279ad2665f655153f40e12fb39e1b8bf 100644 (file)
@@ -142,9 +142,9 @@ public:
         return NI->get<Node *>();
 
       Function *F = NI->get<Function *>();
-      Node *ChildN = G->get(*F);
-      *NI = ChildN;
-      return ChildN;
+      Node &ChildN = G->get(*F);
+      *NI = &ChildN;
+      return &ChildN;
     }
     pointer operator->() const { return operator*(); }
 
@@ -332,10 +332,10 @@ public:
 
   /// \brief Get a graph node for a given function, scanning it to populate the
   /// graph data as necessary.
-  Node *get(Function &F) {
+  Node &get(Function &F) {
     Node *&N = NodeMap[&F];
     if (N)
-      return N;
+      return *N;
 
     return insertInto(F, N);
   }
@@ -345,7 +345,7 @@ public:
 
   /// \brief Update the call graph after deleting an edge.
   void removeEdge(Function &Caller, Function &Callee) {
-    return removeEdge(*get(Caller), Callee);
+    return removeEdge(get(Caller), Callee);
   }
 
 private:
@@ -387,7 +387,7 @@ private:
 
   /// \brief Helper to insert a new function, with an already looked-up entry in
   /// the NodeMap.
-  Node *insertInto(Function &F, Node *&MappedN);
+  Node &insertInto(Function &F, Node *&MappedN);
 
   /// \brief Helper to update pointers back to the graph object during moves.
   void updateGraphPtrs();
index d31793803ac001aa20c03c66240eeaf3f55aff9c..128448e4c931a9213fe86246810e8a1aa1ac3a35 100644 (file)
@@ -362,8 +362,8 @@ void LazyCallGraph::removeEdge(Node &CallerN, Function &Callee) {
   CallerC->removeInternalEdge(*this, CallerN, *CalleeN);
 }
 
-LazyCallGraph::Node *LazyCallGraph::insertInto(Function &F, Node *&MappedN) {
-  return new (MappedN = BPA.Allocate()) Node(*this, F);
+LazyCallGraph::Node &LazyCallGraph::insertInto(Function &F, Node *&MappedN) {
+  return *new (MappedN = BPA.Allocate()) Node(*this, F);
 }
 
 void LazyCallGraph::updateGraphPtrs() {
@@ -435,8 +435,8 @@ LazyCallGraph::SCC *LazyCallGraph::getNextSCCInPostOrder() {
 
     // Reset the DFS numbering.
     NextDFSNumber = 1;
-    Node *N = get(*SCCEntryNodes.pop_back_val());
-    DFSStack.push_back(std::make_pair(N, N->begin()));
+    Node &N = get(*SCCEntryNodes.pop_back_val());
+    DFSStack.push_back(std::make_pair(&N, N.begin()));
   }
 
   auto SI = DFSStack.rbegin();