[LCG] Make the insertion and query paths into the LCG which cannot fail

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
This commit is contained in:
Chandler Carruth 2014-04-23 23:20:36 +00:00
parent 31d2477c68
commit 807c1bc847
2 changed files with 11 additions and 11 deletions

View File

@ -142,9 +142,9 @@ public:
return NI->get<Node *>(); return NI->get<Node *>();
Function *F = NI->get<Function *>(); Function *F = NI->get<Function *>();
Node *ChildN = G->get(*F); Node &ChildN = G->get(*F);
*NI = ChildN; *NI = &ChildN;
return ChildN; return &ChildN;
} }
pointer operator->() const { return operator*(); } pointer operator->() const { return operator*(); }
@ -332,10 +332,10 @@ public:
/// \brief Get a graph node for a given function, scanning it to populate the /// \brief Get a graph node for a given function, scanning it to populate the
/// graph data as necessary. /// graph data as necessary.
Node *get(Function &F) { Node &get(Function &F) {
Node *&N = NodeMap[&F]; Node *&N = NodeMap[&F];
if (N) if (N)
return N; return *N;
return insertInto(F, N); return insertInto(F, N);
} }
@ -345,7 +345,7 @@ public:
/// \brief Update the call graph after deleting an edge. /// \brief Update the call graph after deleting an edge.
void removeEdge(Function &Caller, Function &Callee) { void removeEdge(Function &Caller, Function &Callee) {
return removeEdge(*get(Caller), Callee); return removeEdge(get(Caller), Callee);
} }
private: private:
@ -387,7 +387,7 @@ private:
/// \brief Helper to insert a new function, with an already looked-up entry in /// \brief Helper to insert a new function, with an already looked-up entry in
/// the NodeMap. /// 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. /// \brief Helper to update pointers back to the graph object during moves.
void updateGraphPtrs(); void updateGraphPtrs();

View File

@ -362,8 +362,8 @@ void LazyCallGraph::removeEdge(Node &CallerN, Function &Callee) {
CallerC->removeInternalEdge(*this, CallerN, *CalleeN); CallerC->removeInternalEdge(*this, CallerN, *CalleeN);
} }
LazyCallGraph::Node *LazyCallGraph::insertInto(Function &F, Node *&MappedN) { LazyCallGraph::Node &LazyCallGraph::insertInto(Function &F, Node *&MappedN) {
return new (MappedN = BPA.Allocate()) Node(*this, F); return *new (MappedN = BPA.Allocate()) Node(*this, F);
} }
void LazyCallGraph::updateGraphPtrs() { void LazyCallGraph::updateGraphPtrs() {
@ -435,8 +435,8 @@ LazyCallGraph::SCC *LazyCallGraph::getNextSCCInPostOrder() {
// Reset the DFS numbering. // Reset the DFS numbering.
NextDFSNumber = 1; NextDFSNumber = 1;
Node *N = get(*SCCEntryNodes.pop_back_val()); Node &N = get(*SCCEntryNodes.pop_back_val());
DFSStack.push_back(std::make_pair(N, N->begin())); DFSStack.push_back(std::make_pair(&N, N.begin()));
} }
auto SI = DFSStack.rbegin(); auto SI = DFSStack.rbegin();