diff options
author | Chris Lattner <sabre@nondot.org> | 2009-10-21 06:24:21 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2009-10-21 06:24:21 +0000 |
commit | b304f77cb621a47221f2aa2d35acdb5c730421ff (patch) | |
tree | b79f4aefdc1c0e4fa832aa5c7b6ad7c7877b9b29 /lib/Basic/TargetInfo.cpp | |
parent | 4a27d7061ee2fe0e2b71aa470c323e76afb95917 (diff) |
add helpful methods to TargetInfo for querying builtin integer type properties,
patch by Ken Dyck!
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@84746 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Basic/TargetInfo.cpp')
-rw-r--r-- | lib/Basic/TargetInfo.cpp | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/lib/Basic/TargetInfo.cpp b/lib/Basic/TargetInfo.cpp index f9e789c36d..8f3c777c20 100644 --- a/lib/Basic/TargetInfo.cpp +++ b/lib/Basic/TargetInfo.cpp @@ -74,6 +74,57 @@ const char *TargetInfo::getTypeName(IntType T) { } } +/// getTypeConstantSuffix - Return the constant suffix for the specified +/// integer type enum. For example, SignedLong -> "L". +const char *TargetInfo::getTypeConstantSuffix(IntType T) { + switch (T) { + default: assert(0 && "not an integer!"); + case SignedShort: + case SignedInt: return ""; + case SignedLong: return "L"; + case SignedLongLong: return "LL"; + case UnsignedShort: + case UnsignedInt: return "U"; + case UnsignedLong: return "UL"; + case UnsignedLongLong: return "ULL"; + } +} + +/// getTypeWidth - Return the width (in bits) of the specified integer type +/// enum. For example, SignedInt -> getIntWidth(). +unsigned TargetInfo::getTypeWidth(IntType T) const { + switch (T) { + default: assert(0 && "not an integer!"); + case SignedShort: return getShortWidth(); + case UnsignedShort: return getShortWidth(); + case SignedInt: return getIntWidth(); + case UnsignedInt: return getIntWidth(); + case SignedLong: return getLongWidth(); + case UnsignedLong: return getLongWidth(); + case SignedLongLong: return getLongLongWidth(); + case UnsignedLongLong: return getLongLongWidth(); + }; +} + +/// getTypeSigned - Return whether an integer types is signed. Returns true if +/// the type is signed; false otherwise. +bool TargetInfo::getTypeSigned(IntType T) const { + switch (T) { + default: assert(0 && "not an integer!"); + case SignedShort: + case SignedInt: + case SignedLong: + case SignedLongLong: + return true; + case UnsignedShort: + case UnsignedInt: + case UnsignedLong: + case UnsignedLongLong: + return false; + }; +} + + //===----------------------------------------------------------------------===// |