]> granicus.if.org Git - clang/commitdiff
Change the return type of ASTContext::getTypeSizeInChars() from uint64_t to the
authorKen Dyck <ken.dyck@onsemi.com>
Fri, 18 Dec 2009 15:55:54 +0000 (15:55 +0000)
committerKen Dyck <ken.dyck@onsemi.com>
Fri, 18 Dec 2009 15:55:54 +0000 (15:55 +0000)
new opaque value type, CharUnits. This will help us avoid accidentally mixing
quantities that are in bit and character units.

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

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

index 96861b5a2a576a01beb6acc4c1319f626025cb7d..617a019baf1e94515b1ce077b8508826749fac96 100644 (file)
@@ -18,6 +18,7 @@
 #include "clang/Basic/LangOptions.h"
 #include "clang/Basic/OperatorKinds.h"
 #include "clang/AST/Attr.h"
+#include "clang/AST/CharUnits.h"
 #include "clang/AST/Decl.h"
 #include "clang/AST/NestedNameSpecifier.h"
 #include "clang/AST/PrettyPrinter.h"
@@ -819,11 +820,11 @@ public:
   
   /// getTypeSizeInChars - Return the size of the specified type, in characters.
   /// This method does not work on incomplete types.
-  uint64_t getTypeSizeInChars(QualType T) {
-    return getTypeSize(T) / getCharWidth();
+  CharUnits getTypeSizeInChars(QualType T) {
+    return CharUnits::fromRaw(getTypeSize(T) / getCharWidth());
   }
-  uint64_t getTypeSizeInChars(const Type *T) {
-    return getTypeSize(T) / getCharWidth();
+  CharUnits getTypeSizeInChars(const Type *T) {
+    return CharUnits::fromRaw(getTypeSize(T) / getCharWidth());
   }
 
   /// getTypeAlign - Return the ABI-specified alignment of a type, in bits.
index 3db3eefc1e69ae544d41ce942bc7b0c4e7d32b76..72dc8373ca189f78d322fe36488ab49ba0678199 100644 (file)
@@ -471,7 +471,8 @@ void CodeGenFunction::EmitLocalBlockVarDecl(const VarDecl &D) {
       const llvm::Type *IntPtr =
         llvm::IntegerType::get(VMContext, LLVMPointerWidth);
       llvm::Value *SizeVal =
-        llvm::ConstantInt::get(IntPtr, getContext().getTypeSizeInChars(Ty));
+        llvm::ConstantInt::get(IntPtr, 
+                               getContext().getTypeSizeInChars(Ty).getRaw());
 
       const llvm::Type *BP = llvm::Type::getInt8PtrTy(VMContext);
       if (Loc->getType() != BP)