aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen/CodeGenTypes.cpp
diff options
context:
space:
mode:
authorFariborz Jahanian <fjahanian@apple.com>2009-07-25 21:12:28 +0000
committerFariborz Jahanian <fjahanian@apple.com>2009-07-25 21:12:28 +0000
commit742cd1b7bb86b52b23b335d47abbd842dac0e1bf (patch)
tree28fce3ebccc590afb204d4376b89fbc877c1d9ae /lib/CodeGen/CodeGenTypes.cpp
parent9cc11e70031365972424b43f439021d88096b146 (diff)
ir-gen for non-virtual base class initialization
in constructors. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77087 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/CodeGenTypes.cpp')
-rw-r--r--lib/CodeGen/CodeGenTypes.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/CodeGen/CodeGenTypes.cpp b/lib/CodeGen/CodeGenTypes.cpp
index 0869b2d11c..21c7c38eee 100644
--- a/lib/CodeGen/CodeGenTypes.cpp
+++ b/lib/CodeGen/CodeGenTypes.cpp
@@ -14,6 +14,7 @@
#include "CodeGenTypes.h"
#include "clang/AST/ASTContext.h"
#include "clang/AST/DeclObjC.h"
+#include "clang/AST/DeclCXX.h"
#include "clang/AST/Expr.h"
#include "clang/AST/RecordLayout.h"
#include "llvm/DerivedTypes.h"
@@ -545,8 +546,13 @@ void RecordOrganizer::layoutStructFields(const ASTRecordLayout &RL) {
uint64_t llvmSize = 0;
// FIXME: Make this a SmallVector
std::vector<const llvm::Type*> LLVMFields;
-
+
unsigned curField = 0;
+ // Adjust by number of bases.
+ // FIXME. This will probably change when virtual bases are supported.
+ if (const CXXRecordDecl *CXXRD = dyn_cast<CXXRecordDecl>(&RD))
+ curField += CXXRD->getNumBases();
+
for (RecordDecl::field_iterator Field = RD.field_begin(),
FieldEnd = RD.field_end();
Field != FieldEnd; ++Field) {