summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang/lib/CodeGen/CGRecordLayoutBuilder.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp b/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
index d7d214fd7ec..e67f517e1e3 100644
--- a/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
+++ b/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp
@@ -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);
OpenPOWER on IntegriCloud