]> granicus.if.org Git - clang/commitdiff
Eliminate literal 8s from LayoutUnionField by converting NumBytesToAppend to
authorKen Dyck <kd@kendyck.com>
Sun, 24 Apr 2011 16:47:33 +0000 (16:47 +0000)
committerKen Dyck <kd@kendyck.com>
Sun, 24 Apr 2011 16:47:33 +0000 (16:47 +0000)
CharUnits. No change in functionality intended.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130107 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/CGRecordLayoutBuilder.cpp

index 506066571bbc730966c3bb50f7154be1b6549c64..67a2ef3db9e52e386d803839d62e6ca3c63c7018 100644 (file)
@@ -481,11 +481,12 @@ CGRecordLayoutBuilder::LayoutUnionField(const FieldDecl *Field,
       return 0;
 
     const llvm::Type *FieldTy = llvm::Type::getInt8Ty(Types.getLLVMContext());
-    unsigned NumBytesToAppend =
-      llvm::RoundUpToAlignment(FieldSize, 8) / 8;
+    CharUnits NumBytesToAppend = Types.getContext().toCharUnitsFromBits(
+      llvm::RoundUpToAlignment(FieldSize, 
+                               Types.getContext().Target.getCharAlign()));
 
-    if (NumBytesToAppend > 1)
-      FieldTy = llvm::ArrayType::get(FieldTy, NumBytesToAppend);
+    if (NumBytesToAppend > CharUnits::One())
+      FieldTy = llvm::ArrayType::get(FieldTy, NumBytesToAppend.getQuantity());
 
     // Add the bit field info.
     BitFields.insert(std::make_pair(Field,