diff options
author | Chris Lattner <sabre@nondot.org> | 2007-04-28 05:38:52 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2007-04-28 05:38:52 +0000 |
commit | bb58b9c3c03dda9d03e92a9dd2a0d00dfb922331 (patch) | |
tree | 3fb7d5122583e22e6c1b02b08a2134099d7eb375 | |
parent | 7f3c4d49df119f5f01e462fc50bed4eb1704d7d6 (diff) | |
download | llvm-bb58b9c3c03dda9d03e92a9dd2a0d00dfb922331.tar.gz llvm-bb58b9c3c03dda9d03e92a9dd2a0d00dfb922331.tar.bz2 llvm-bb58b9c3c03dda9d03e92a9dd2a0d00dfb922331.tar.xz |
add a way to make this less brittle
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36528 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/CodeGen/ValueTypes.h | 5 | ||||
-rw-r--r-- | lib/VMCore/ValueTypes.cpp | 10 |
2 files changed, 10 insertions, 5 deletions
diff --git a/include/llvm/CodeGen/ValueTypes.h b/include/llvm/CodeGen/ValueTypes.h index be16aa0c60..6f864d7914 100644 --- a/include/llvm/CodeGen/ValueTypes.h +++ b/include/llvm/CodeGen/ValueTypes.h @@ -205,8 +205,9 @@ namespace MVT { // MVT = Machine Value Types /// MVT::getValueType - Return the value type corresponding to the specified /// type. This returns all vectors as MVT::Vector and all pointers as - /// MVT::iPTR. - ValueType getValueType(const Type *Ty); + /// MVT::iPTR. If HandleUnknown is true, unknown types are returned as Other, + /// otherwise they are invalid. + ValueType getValueType(const Type *Ty, bool HandleUnknown = false); } } // End llvm namespace diff --git a/lib/VMCore/ValueTypes.cpp b/lib/VMCore/ValueTypes.cpp index ccbd29771d..52d8549201 100644 --- a/lib/VMCore/ValueTypes.cpp +++ b/lib/VMCore/ValueTypes.cpp @@ -113,16 +113,20 @@ const Type *MVT::getTypeForValueType(MVT::ValueType VT) { /// MVT::getValueType - Return the value type corresponding to the specified /// type. This returns all vectors as MVT::Vector and all pointers as -/// MVT::iPTR. -MVT::ValueType MVT::getValueType(const Type *Ty) { +/// MVT::iPTR. If HandleUnknown is true, unknown types are returned as Other, +/// otherwise they are invalid. +MVT::ValueType MVT::getValueType(const Type *Ty, bool HandleUnknown) { switch (Ty->getTypeID()) { - default: assert(0 && "Unknown type!"); + default: + if (HandleUnknown) return MVT::Other; + assert(0 && "Unknown type!"); case Type::VoidTyID: return MVT::isVoid; case Type::IntegerTyID: switch (cast<IntegerType>(Ty)->getBitWidth()) { default: // FIXME: Return MVT::iANY. + if (HandleUnknown) return MVT::Other; assert(0 && "Invalid width for value type"); case 1: return MVT::i1; case 8: return MVT::i8; |