diff options
Diffstat (limited to 'CodeGen/CodeGenTypes.cpp')
-rw-r--r-- | CodeGen/CodeGenTypes.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/CodeGen/CodeGenTypes.cpp b/CodeGen/CodeGenTypes.cpp index 745ba1d87e..7cd2ece34d 100644 --- a/CodeGen/CodeGenTypes.cpp +++ b/CodeGen/CodeGenTypes.cpp @@ -368,7 +368,10 @@ void RecordOrganizer::layoutStructFields(CodeGenTypes &CGT, const llvm::Type *Ty = CGT.ConvertType(FD->getType()); uint64_t Offset = RL.getFieldOffset(FieldNo); - assert (Offset == Cursor && "FIXME Invalid struct layout"); + unsigned align = CGT.getTargetData().getABITypeAlignment(Ty); + if (Cursor % align != 0) + assert (Offset == Cursor && "FIXME Invalid struct layout"); + Cursor += CGT.getTargetData().getTypeSizeInBits(Ty); Fields.push_back(Ty); |