]> granicus.if.org Git - clang/commitdiff
Add toCharUnitsInBits() to simplify the many calls to CharUnits::fromQuantity() of...
authorKen Dyck <ken.dyck@onsemi.com>
Sat, 15 Jan 2011 18:38:59 +0000 (18:38 +0000)
committerKen Dyck <ken.dyck@onsemi.com>
Sat, 15 Jan 2011 18:38:59 +0000 (18:38 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123542 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/AST/ASTContext.h
lib/AST/ASTContext.cpp

index 97388dc0909c39528a9a73506d40a24ba56754bc..9d9147e54662c9a51bc082e78426487c5eb26dd2 100644 (file)
@@ -1006,6 +1006,9 @@ public:
     return getTypeSize(CharTy);
   }
   
+  /// toCharUnitsFromBits - Convert a size in bits to a size in characters.
+  CharUnits toCharUnitsFromBits(int64_t BitSize) const;
+
   /// getTypeSizeInChars - Return the size of the specified type, in characters.
   /// This method does not work on incomplete types.
   CharUnits getTypeSizeInChars(QualType T) const;
index a18247d7cee7d6c891df843a8495681a23c84b6b..2e1a8c2d4bb3cbd526fa9678183aed04375d64e2 100644 (file)
@@ -592,14 +592,14 @@ CharUnits ASTContext::getDeclAlign(const Decl *D, bool RefAsPointee) const {
     }
   }
 
-  return CharUnits::fromQuantity(Align / Target.getCharWidth());
+  return toCharUnitsFromBits(Align);
 }
 
 std::pair<CharUnits, CharUnits>
 ASTContext::getTypeInfoInChars(const Type *T) {
   std::pair<uint64_t, unsigned> Info = getTypeInfo(T);
-  return std::make_pair(CharUnits::fromQuantity(Info.first / getCharWidth()),
-                        CharUnits::fromQuantity(Info.second / getCharWidth()));
+  return std::make_pair(toCharUnitsFromBits(Info.first),
+                        toCharUnitsFromBits(Info.second));
 }
 
 std::pair<CharUnits, CharUnits>
@@ -862,22 +862,27 @@ ASTContext::getTypeInfo(const Type *T) const {
   return std::make_pair(Width, Align);
 }
 
+/// toCharUnitsFromBits - Convert a size in bits to a size in characters.
+CharUnits ASTContext::toCharUnitsFromBits(int64_t BitSize) const {
+  return CharUnits::fromQuantity(BitSize / getCharWidth());
+}
+
 /// getTypeSizeInChars - Return the size of the specified type, in characters.
 /// This method does not work on incomplete types.
 CharUnits ASTContext::getTypeSizeInChars(QualType T) const {
-  return CharUnits::fromQuantity(getTypeSize(T) / getCharWidth());
+  return toCharUnitsFromBits(getTypeSize(T));
 }
 CharUnits ASTContext::getTypeSizeInChars(const Type *T) const {
-  return CharUnits::fromQuantity(getTypeSize(T) / getCharWidth());
+  return toCharUnitsFromBits(getTypeSize(T));
 }
 
 /// getTypeAlignInChars - Return the ABI-specified alignment of a type, in 
 /// characters. This method does not work on incomplete types.
 CharUnits ASTContext::getTypeAlignInChars(QualType T) const {
-  return CharUnits::fromQuantity(getTypeAlign(T) / getCharWidth());
+  return toCharUnitsFromBits(getTypeAlign(T));
 }
 CharUnits ASTContext::getTypeAlignInChars(const Type *T) const {
-  return CharUnits::fromQuantity(getTypeAlign(T) / getCharWidth());
+  return toCharUnitsFromBits(getTypeAlign(T));
 }
 
 /// getPreferredTypeAlign - Return the "preferred" alignment of the specified