зеркало из https://github.com/microsoft/clang-1.git
Fix ivar's size encoding.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67389 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
fc6a89964b
Коммит
99c20ebfbd
|
@ -367,12 +367,25 @@ llvm::DIType CGDebugInfo::CreateType(const ObjCInterfaceType *Ty,
|
|||
SourceLocation FieldDefLoc = Field->getLocation();
|
||||
llvm::DICompileUnit FieldDefUnit = getOrCreateCompileUnit(FieldDefLoc);
|
||||
unsigned FieldLine = SM.getInstantiationLineNumber(FieldDefLoc);
|
||||
|
||||
// Bit size, align and offset of the type.
|
||||
uint64_t FieldSize = M->getContext().getTypeSize(Ty);
|
||||
unsigned FieldAlign = M->getContext().getTypeAlign(Ty);
|
||||
uint64_t FieldOffset = RL.getFieldOffset(FieldNo);
|
||||
|
||||
QualType FType = Field->getType();
|
||||
uint64_t FieldSize = 0;
|
||||
unsigned FieldAlign = 0;
|
||||
|
||||
if (!FType->isIncompleteArrayType()) {
|
||||
|
||||
// Bit size, align and offset of the type.
|
||||
FieldSize = M->getContext().getTypeSize(FType);
|
||||
Expr *BitWidth = Field->getBitWidth();
|
||||
if (BitWidth)
|
||||
FieldSize =
|
||||
BitWidth->getIntegerConstantExprValue(M->getContext()).getZExtValue();
|
||||
|
||||
FieldAlign = M->getContext().getTypeAlign(FType);
|
||||
}
|
||||
|
||||
uint64_t FieldOffset = RL.getFieldOffset(FieldNo);
|
||||
|
||||
unsigned Flags = 0;
|
||||
if (Field->getAccessControl() == ObjCIvarDecl::Protected)
|
||||
Flags = llvm::DIType::FlagProtected;
|
||||
|
|
Загрузка…
Ссылка в новой задаче