summaryrefslogtreecommitdiffstats
path: root/clang/lib/AST/ASTContext.cpp
diff options
context:
space:
mode:
authorDevang Patel <dpatel@apple.com>2008-06-06 01:50:12 +0000
committerDevang Patel <dpatel@apple.com>2008-06-06 01:50:12 +0000
commit1216b05d3d898c40fa3e674dc49ad22eb59b3db3 (patch)
treed37ae9f01876de0189f46f2d5cc2f20c97ce31f9 /clang/lib/AST/ASTContext.cpp
parent3ad519441fa2383349e3aefd4f9f72a231aaa866 (diff)
downloadbcm5719-llvm-1216b05d3d898c40fa3e674dc49ad22eb59b3db3.tar.gz
bcm5719-llvm-1216b05d3d898c40fa3e674dc49ad22eb59b3db3.zip
During interface layout, don't forget super class.
llvm-svn: 52033
Diffstat (limited to 'clang/lib/AST/ASTContext.cpp')
-rw-r--r--clang/lib/AST/ASTContext.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/clang/lib/AST/ASTContext.cpp b/clang/lib/AST/ASTContext.cpp
index 4a1fb39bb60..8733a6b9894 100644
--- a/clang/lib/AST/ASTContext.cpp
+++ b/clang/lib/AST/ASTContext.cpp
@@ -405,7 +405,15 @@ ASTContext::getASTObjCInterfaceLayout(const ObjCInterfaceDecl *D) {
// Allocate and assign into ASTRecordLayouts here. The "Entry" reference can
// be invalidated (dangle) if the ASTRecordLayouts hashtable is inserted into.
- ASTRecordLayout *NewEntry = new ASTRecordLayout();
+ unsigned Alignment = 8;
+ uint64_t Size = 0;
+ if (ObjCInterfaceDecl *SD = D->getSuperClass()) {
+ const ASTRecordLayout &SL = getASTObjCInterfaceLayout(SD);
+ Alignment = SL.getAlignment();
+ Size = SL.getSize();
+ }
+ ASTRecordLayout *NewEntry = new ASTRecordLayout(Size, Alignment);
+
Entry = NewEntry;
NewEntry->InitializeLayout(D->ivar_size());
OpenPOWER on IntegriCloud