aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKen Dyck <kd@kendyck.com>2011-03-10 01:53:59 +0000
committerKen Dyck <kd@kendyck.com>2011-03-10 01:53:59 +0000
commit90ce2dba294b8443169fe1a583914908fae0e767 (patch)
tree7dbc00257edfeceb8c05f94409fd5249304b65c0
parent3179a45a0e91c1dcf3492222170cf4499531bb92 (diff)
Round up the non-virtual size to the next char instead of rounding down.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127390 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/AST/RecordLayoutBuilder.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/lib/AST/RecordLayoutBuilder.cpp b/lib/AST/RecordLayoutBuilder.cpp
index 3bdb677975..ecaa1f6962 100644
--- a/lib/AST/RecordLayoutBuilder.cpp
+++ b/lib/AST/RecordLayoutBuilder.cpp
@@ -1183,8 +1183,9 @@ void RecordLayoutBuilder::Layout(const CXXRecordDecl *RD) {
LayoutFields(RD);
- // FIXME: Size isn't always an exact multiple of the char width. Round up?
- NonVirtualSize = Context.toCharUnitsFromBits(getSizeInBits());
+ NonVirtualSize = Context.toCharUnitsFromBits(
+ llvm::RoundUpToAlignment(getSizeInBits(),
+ Context.Target.getCharAlign()));
NonVirtualAlignment = Alignment;
// Lay out the virtual bases and add the primary virtual base offsets.