Convert RecordLayout::NonVirtualAlign to CharUnits. No change in
functionality intended.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125069 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/AST/RecordLayout.cpp b/lib/AST/RecordLayout.cpp
index cdecff6..32e3821 100644
--- a/lib/AST/RecordLayout.cpp
+++ b/lib/AST/RecordLayout.cpp
@@ -46,7 +46,7 @@
                                  const uint64_t *fieldoffsets,
                                  unsigned fieldcount,
                                  CharUnits nonvirtualsize,
-                                 unsigned nonvirtualalign,
+                                 CharUnits nonvirtualalign,
                                  CharUnits SizeOfLargestEmptySubobject,
                                  const CXXRecordDecl *PrimaryBase,
                                  bool IsPrimaryBaseVirtual,
diff --git a/lib/AST/RecordLayoutBuilder.cpp b/lib/AST/RecordLayoutBuilder.cpp
index a871c3d..6b98ecd 100644
--- a/lib/AST/RecordLayoutBuilder.cpp
+++ b/lib/AST/RecordLayoutBuilder.cpp
@@ -1096,7 +1096,8 @@
     return CharUnits::Zero();
   }
 
-  unsigned UnpackedBaseAlign = Layout.getNonVirtualAlign();
+  unsigned UnpackedBaseAlign = 
+    Layout.getNonVirtualAlign().getQuantity() * Context.getCharWidth();
   unsigned BaseAlign = (Packed) ? 8 : UnpackedBaseAlign;
 
   // The maximum field alignment overrides base align.
@@ -1684,13 +1685,14 @@
       IsPODForThePurposeOfLayout ? Builder->Size : Builder->DataSize;
     uint64_t NonVirtualSize =
       IsPODForThePurposeOfLayout ? DataSize : Builder->NonVirtualSize;
+    uint64_t NonVirtualAlign = Builder->NonVirtualAlignment;
 
     NewEntry =
       new (*this) ASTRecordLayout(*this, Builder->Size, Builder->Alignment,
                                   DataSize, Builder->FieldOffsets.data(),
                                   Builder->FieldOffsets.size(),
                                   toCharUnitsFromBits(NonVirtualSize),
-                                  Builder->NonVirtualAlignment,
+                                  toCharUnitsFromBits(NonVirtualAlign),
                                   EmptySubobjects.SizeOfLargestEmptySubobject,
                                   Builder->PrimaryBase,
                                   Builder->PrimaryBaseIsVirtual,
@@ -1859,7 +1861,7 @@
   OS << ", dsize=" << Layout.getDataSize() / 8;
   OS << ", align=" << Layout.getAlignment() / 8 << '\n';
   OS << "  nvsize=" << Layout.getNonVirtualSize().getQuantity();
-  OS << ", nvalign=" << Layout.getNonVirtualAlign() / 8 << '\n';
+  OS << ", nvalign=" << Layout.getNonVirtualAlign().getQuantity() << '\n';
   OS << '\n';
 }
 
diff --git a/lib/CodeGen/CGRecordLayoutBuilder.cpp b/lib/CodeGen/CGRecordLayoutBuilder.cpp
index b9b8c9d..e158eed 100644
--- a/lib/CodeGen/CGRecordLayoutBuilder.cpp
+++ b/lib/CodeGen/CGRecordLayoutBuilder.cpp
@@ -617,9 +617,10 @@
   const ASTRecordLayout &Layout = Types.getContext().getASTRecordLayout(RD);
 
 
+  CharUnits NonVirtualSize  = Layout.getNonVirtualSize();
+  CharUnits NonVirtualAlign = Layout.getNonVirtualAlign();
   uint64_t AlignedNonVirtualTypeSize =
-    llvm::RoundUpToAlignment(Layout.getNonVirtualSize().getQuantity() * 8,
-                             Layout.getNonVirtualAlign()) / 8;
+    NonVirtualSize.RoundUpToAlignment(NonVirtualAlign).getQuantity();
   
   
   // First check if we can use the same fields as for the complete class.
@@ -855,9 +856,13 @@
          "Type size mismatch!");
 
   if (BaseTy) {
-    uint64_t AlignedNonVirtualTypeSizeInBits =
-      llvm::RoundUpToAlignment(Layout.getNonVirtualSize().getQuantity() * 8,
-                               Layout.getNonVirtualAlign());
+    CharUnits NonVirtualSize  = Layout.getNonVirtualSize();
+    CharUnits NonVirtualAlign = Layout.getNonVirtualAlign();
+    CharUnits AlignedNonVirtualTypeSize = 
+      NonVirtualSize.RoundUpToAlignment(NonVirtualAlign);
+
+    uint64_t AlignedNonVirtualTypeSizeInBits = 
+      AlignedNonVirtualTypeSize.getQuantity() * getContext().getCharWidth();
 
     assert(AlignedNonVirtualTypeSizeInBits == 
            getTargetData().getTypeAllocSizeInBits(BaseTy) &&