summaryrefslogtreecommitdiffstats
path: root/clang/lib/AST/RecordLayoutBuilder.cpp
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2010-06-29 18:34:35 +0000
committerDaniel Dunbar <daniel@zuster.org>2010-06-29 18:34:35 +0000
commitf35e76552f68dc07bedc75f006e0ae1a9a18e81c (patch)
treeb8d67f07bd9c0202731adf2b7e05cd6d7dd306fc /clang/lib/AST/RecordLayoutBuilder.cpp
parenta4575f5b31fdf23633dfe5cc71d9da24a074aa3d (diff)
downloadbcm5719-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.cpp2
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())
OpenPOWER on IntegriCloud