From: Chris Lattner Date: Mon, 6 May 2002 16:14:39 +0000 (+0000) Subject: Implement getPrimitiveSize() X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=d44023ecb7a699e52f119bec0eb86830989ff35a;p=oota-llvm.git Implement getPrimitiveSize() don't use isPointerType() git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2485 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/VMCore/Type.cpp b/lib/VMCore/Type.cpp index 3ea928e4eb0..d193a38ed6f 100644 --- a/lib/VMCore/Type.cpp +++ b/lib/VMCore/Type.cpp @@ -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(this)) || + (!isa(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(V)) return false;