]> granicus.if.org Git - clang/commitdiff
Fixing code gen to handle microsoft layouts for which size % alignment
authorWarren Hunt <whunt@google.com>
Tue, 29 Oct 2013 23:49:26 +0000 (23:49 +0000)
committerWarren Hunt <whunt@google.com>
Tue, 29 Oct 2013 23:49:26 +0000 (23:49 +0000)
!= 0

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@193661 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/CGRecordLayoutBuilder.cpp

index d7d214fd7ecc500c8e4941c63554e266be8436a6..e67f517e1e35c39f6cce46de4b7a66950774126b 100644 (file)
@@ -203,6 +203,9 @@ public:
 void CGRecordLayoutBuilder::Layout(const RecordDecl *D) {
   Alignment = Types.getContext().getASTRecordLayout(D).getAlignment();
   Packed = D->hasAttr<PackedAttr>();
+  const ASTRecordLayout &Layout = Types.getContext().getASTRecordLayout(D);
+  if (Layout.getSize() % Layout.getAlignment() != 0)
+    Packed = true;
 
   if (D->isUnion()) {
     LayoutUnion(D);