diff options
author | Charles Davis <cdavis@mines.edu> | 2010-08-19 02:18:14 +0000 |
---|---|---|
committer | Charles Davis <cdavis@mines.edu> | 2010-08-19 02:18:14 +0000 |
commit | 20cf717034ba1f20fc47c025ecb72ed9b631ad13 (patch) | |
tree | 5465f2c82f0d3caf0bce2ffe9db91be515f3a73a /lib/AST/RecordLayoutBuilder.cpp | |
parent | 671947b18dba342f9aba022ee992babef325a833 (diff) |
Add some enum goodness as requested by Chris. Now instead of storing the
active C++ ABI as a raw string, we store it as an enum. This should improve
performance somewhat.
And yes, this time, I started from a clean build directory, and
all the tests passed. :)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111507 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/AST/RecordLayoutBuilder.cpp')
-rw-r--r-- | lib/AST/RecordLayoutBuilder.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/lib/AST/RecordLayoutBuilder.cpp b/lib/AST/RecordLayoutBuilder.cpp index 907c359ce4..ff77561419 100644 --- a/lib/AST/RecordLayoutBuilder.cpp +++ b/lib/AST/RecordLayoutBuilder.cpp @@ -1463,8 +1463,6 @@ RecordLayoutBuilder::ComputeKeyFunction(const CXXRecordDecl *RD) { // This class implements layout specific to the Microsoft ABI. class MSRecordLayoutBuilder: public RecordLayoutBuilder { - friend class ASTContext; - public: MSRecordLayoutBuilder(ASTContext& Ctx, EmptySubobjectMap *EmptySubobjects): RecordLayoutBuilder(Ctx, EmptySubobjects) {} @@ -1514,10 +1512,13 @@ const ASTRecordLayout &ASTContext::getASTRecordLayout(const RecordDecl *D) { // When compiling for Microsoft, use the special MS builder. RecordLayoutBuilder *Builder; - if (Target.getCXXABI() == "microsoft") - Builder = new MSRecordLayoutBuilder(*this, &EmptySubobjects); - else + switch (Target.getCXXABI()) { + default: Builder = new RecordLayoutBuilder(*this, &EmptySubobjects); + break; + case CXXABI_Microsoft: + Builder = new MSRecordLayoutBuilder(*this, &EmptySubobjects); + } Builder->Layout(RD); // FIXME: This is not always correct. See the part about bitfields at |