diff options
| author | Anders Carlsson <andersca@mac.com> | 2009-12-07 04:35:11 +0000 |
|---|---|---|
| committer | Anders Carlsson <andersca@mac.com> | 2009-12-07 04:35:11 +0000 |
| commit | 5ebf8b44e925c79fbdfb11aac9cb14522036f849 (patch) | |
| tree | 6240fc3156e8d204cca414891b36a92384b2aeb9 /clang/lib/AST/ASTContext.cpp | |
| parent | 92c310cb7984bb3336725939dbb71709d473648e (diff) | |
| download | bcm5719-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.cpp | 14 |
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 //===----------------------------------------------------------------------===// |

