From 07935294be2d4d604aef8edbaeb2e7fcefdaf6af Mon Sep 17 00:00:00 2001 From: Benjamin Kramer Date: Sat, 4 Oct 2014 17:01:26 +0000 Subject: Return a reference instead of vector copy for parentmap queries. The map is immutable until the whole ASTContext dies. While there movify a couple of copies in ASTMatchFinder away. NFC. llvm-svn: 219062 --- clang/lib/AST/ASTContext.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) (limited to 'clang/lib/AST/ASTContext.cpp') diff --git a/clang/lib/AST/ASTContext.cpp b/clang/lib/AST/ASTContext.cpp index 7e5182e3397..577e82089b8 100644 --- a/clang/lib/AST/ASTContext.cpp +++ b/clang/lib/AST/ASTContext.cpp @@ -8270,7 +8270,7 @@ namespace { } // end namespace -ASTContext::ParentVector +ArrayRef ASTContext::getParents(const ast_type_traits::DynTypedNode &Node) { assert(Node.getMemoizationData() && "Invariant broken: only nodes that support memoization may be " @@ -8283,13 +8283,12 @@ ASTContext::getParents(const ast_type_traits::DynTypedNode &Node) { } ParentMap::const_iterator I = AllParents->find(Node.getMemoizationData()); if (I == AllParents->end()) { - return ParentVector(); + return None; } - if (I->second.is()) { - return ParentVector(1, *I->second.get()); + if (auto *N = I->second.dyn_cast()) { + return llvm::makeArrayRef(N, 1); } - const auto &Parents = *I->second.get(); - return ParentVector(Parents.begin(), Parents.end()); + return *I->second.get(); } bool -- cgit v1.2.3