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 | 84b0316f720bd089d87acb21ec0002b2da33e6c9 (patch) | |
tree | 2203cd3f3eff1b29d5338fef66c3c1da66567256 /lib/AST/RecordLayoutBuilder.cpp | |
parent | bb52114f81e8829fe29a9a0faa49e8b2157206cc (diff) |
Sema: Fix a subtle i64 -> i32 truncation which broke layout of large structures
with bit-fields.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@107185 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/AST/RecordLayoutBuilder.cpp')
-rw-r--r-- | lib/AST/RecordLayoutBuilder.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/AST/RecordLayoutBuilder.cpp b/lib/AST/RecordLayoutBuilder.cpp index 275daf6bb2..88d71ce042 100644 --- a/lib/AST/RecordLayoutBuilder.cpp +++ b/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()) |