summaryrefslogtreecommitdiffstats
path: root/clang/lib/AST/ASTContext.cpp
diff options
context:
space:
mode:
authorAnders Carlsson <andersca@mac.com>2009-12-07 04:35:11 +0000
committerAnders Carlsson <andersca@mac.com>2009-12-07 04:35:11 +0000
commit5ebf8b44e925c79fbdfb11aac9cb14522036f849 (patch)
tree6240fc3156e8d204cca414891b36a92384b2aeb9 /clang/lib/AST/ASTContext.cpp
parent92c310cb7984bb3336725939dbb71709d473648e (diff)
downloadbcm5719-llvm-5ebf8b44e925c79fbdfb11aac9cb14522036f849.tar.gz
bcm5719-llvm-5ebf8b44e925c79fbdfb11aac9cb14522036f849.zip
Move key functions to a separate map.
llvm-svn: 90745
Diffstat (limited to 'clang/lib/AST/ASTContext.cpp')
-rw-r--r--clang/lib/AST/ASTContext.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/clang/lib/AST/ASTContext.cpp b/clang/lib/AST/ASTContext.cpp
index cc96a5dc0e2..490f338d38f 100644
--- a/clang/lib/AST/ASTContext.cpp
+++ b/clang/lib/AST/ASTContext.cpp
@@ -1104,6 +1104,20 @@ const ASTRecordLayout &ASTContext::getASTRecordLayout(const RecordDecl *D) {
return *NewEntry;
}
+const CXXMethodDecl *ASTContext::getKeyFunction(const CXXRecordDecl *RD) {
+ RD = cast<CXXRecordDecl>(RD->getDefinition(*this));
+ assert(RD && "Cannot get key function for forward declarations!");
+
+ const CXXMethodDecl *&Entry = KeyFunctions[RD];
+ if (!Entry)
+ Entry = ASTRecordLayoutBuilder::ComputeKeyFunction(RD);
+ else
+ assert(Entry == ASTRecordLayoutBuilder::ComputeKeyFunction(RD) &&
+ "Key function changed!");
+
+ return Entry;
+}
+
//===----------------------------------------------------------------------===//
// Type creation/memoization methods
//===----------------------------------------------------------------------===//
OpenPOWER on IntegriCloud