aboutsummaryrefslogtreecommitdiff
path: root/lib/AST/RecordLayoutBuilder.cpp
diff options
context:
space:
mode:
authorCharles Davis <cdavis@mines.edu>2010-08-19 02:18:14 +0000
committerCharles Davis <cdavis@mines.edu>2010-08-19 02:18:14 +0000
commit20cf717034ba1f20fc47c025ecb72ed9b631ad13 (patch)
tree5465f2c82f0d3caf0bce2ffe9db91be515f3a73a /lib/AST/RecordLayoutBuilder.cpp
parent671947b18dba342f9aba022ee992babef325a833 (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.cpp11
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