Implement getPrimitiveSize()
authorChris Lattner <sabre@nondot.org>
Mon, 6 May 2002 16:14:39 +0000 (16:14 +0000)
committerChris Lattner <sabre@nondot.org>
Mon, 6 May 2002 16:14:39 +0000 (16:14 +0000)
don't use isPointerType()

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

lib/VMCore/Type.cpp

index 3ea928e4eb02890921f515bdbd7de042f0671ff0..d193a38ed6f5108fdf829ca14e7537453836b1f5 100644 (file)
@@ -87,8 +87,8 @@ const Type *Type::getPrimitiveType(PrimitiveID IDNumber) {
 //
 bool Type::isLosslesslyConvertableTo(const Type *Ty) const {
   if (this == Ty) return true;
-  if ((!isPrimitiveType()   && !isPointerType()) ||
-      (!Ty->isPointerType() && !Ty->isPrimitiveType())) return false;
+  if ((!isPrimitiveType()    && !isa<PointerType>(this)) ||
+      (!isa<PointerType>(Ty) && !Ty->isPrimitiveType())) return false;
 
   if (getPrimitiveID() == Ty->getPrimitiveID())
     return true;  // Handles identity cast, and cast of differing pointer types
@@ -110,6 +110,18 @@ bool Type::isLosslesslyConvertableTo(const Type *Ty) const {
   }
 }
 
+// getPrimitiveSize - Return the basic size of this type if it is a primative
+// type.  These are fixed by LLVM and are not target dependant.  This will
+// return zero if the type does not have a size or is not a primitive type.
+//
+unsigned Type::getPrimitiveSize() const {
+  switch (getPrimitiveID()) {
+#define HANDLE_PRIM_TYPE(TY,SIZE)  case TY##TyID: return SIZE;
+#include "llvm/Type.def"
+  default: return 0;
+  }
+}
+
 
 bool StructType::indexValid(const Value *V) const {
   if (!isa<Constant>(V)) return false;