diff options
| author | Ken Dyck <kd@kendyck.com> | 2011-03-10 01:53:59 +0000 |
|---|---|---|
| committer | Ken Dyck <kd@kendyck.com> | 2011-03-10 01:53:59 +0000 |
| commit | e73807538ad6a87a9aa67127a104d88daf4ad68d (patch) | |
| tree | 46dfdd1e60e97e20bae36fd43d8536d8f68665ae /clang/lib/AST/RecordLayoutBuilder.cpp | |
| parent | 4d6eafa138730e6fde5b6cccb3e37f89e5913a5c (diff) | |
| download | bcm5719-llvm-e73807538ad6a87a9aa67127a104d88daf4ad68d.tar.gz bcm5719-llvm-e73807538ad6a87a9aa67127a104d88daf4ad68d.zip | |
Round up the non-virtual size to the next char instead of rounding down.
llvm-svn: 127390
Diffstat (limited to 'clang/lib/AST/RecordLayoutBuilder.cpp')
| -rw-r--r-- | clang/lib/AST/RecordLayoutBuilder.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/clang/lib/AST/RecordLayoutBuilder.cpp b/clang/lib/AST/RecordLayoutBuilder.cpp index 3bdb6779754..ecaa1f69620 100644 --- a/clang/lib/AST/RecordLayoutBuilder.cpp +++ b/clang/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. |

