зеркало из https://github.com/microsoft/clang-1.git
During interface layout, don't forget super class.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52033 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
c68ecb5724
Коммит
0e8eda7a4d
|
@ -33,7 +33,8 @@ class ASTRecordLayout {
|
|||
uint64_t *FieldOffsets;
|
||||
friend class ASTContext;
|
||||
|
||||
ASTRecordLayout() : Size(0), Alignment(8) {}
|
||||
ASTRecordLayout(uint64_t S = 0, unsigned A = 8)
|
||||
: Size(S), Alignment(A) {}
|
||||
~ASTRecordLayout() {
|
||||
delete [] FieldOffsets;
|
||||
}
|
||||
|
|
|
@ -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());
|
||||
|
|
Загрузка…
Ссылка в новой задаче