diff options
author | Daniel Dunbar <daniel@zuster.org> | 2010-06-29 18:34:35 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2010-06-29 18:34:35 +0000 |
commit | f35e76552f68dc07bedc75f006e0ae1a9a18e81c (patch) | |
tree | b8d67f07bd9c0202731adf2b7e05cd6d7dd306fc /clang/lib/AST/RecordLayoutBuilder.cpp | |
parent | a4575f5b31fdf23633dfe5cc71d9da24a074aa3d (diff) | |
download | bcm5719-llvm-f35e76552f68dc07bedc75f006e0ae1a9a18e81c.tar.gz bcm5719-llvm-f35e76552f68dc07bedc75f006e0ae1a9a18e81c.zip |
Sema: Fix a subtle i64 -> i32 truncation which broke layout of large structures
with bit-fields.
llvm-svn: 107185
Diffstat (limited to 'clang/lib/AST/RecordLayoutBuilder.cpp')
-rw-r--r-- | clang/lib/AST/RecordLayoutBuilder.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/clang/lib/AST/RecordLayoutBuilder.cpp b/clang/lib/AST/RecordLayoutBuilder.cpp index 275daf6bb22..88d71ce0428 100644 --- a/clang/lib/AST/RecordLayoutBuilder.cpp +++ b/clang/lib/AST/RecordLayoutBuilder.cpp @@ -1296,7 +1296,7 @@ void RecordLayoutBuilder::LayoutBitField(const FieldDecl *D) { // Check if we need to add padding to give the field the correct alignment. if (FieldSize == 0 || (FieldOffset & (FieldAlign-1)) + FieldSize > TypeSize) - FieldOffset = (FieldOffset + (FieldAlign-1)) & ~(FieldAlign-1); + FieldOffset = llvm::RoundUpToAlignment(FieldOffset, FieldAlign); // Padding members don't affect overall alignment. if (!D->getIdentifier()) |