From bb58b9c3c03dda9d03e92a9dd2a0d00dfb922331 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sat, 28 Apr 2007 05:38:52 +0000 Subject: [PATCH] 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 --- include/llvm/CodeGen/ValueTypes.h | 5 +++-- 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 be16aa0c60c..6f864d79146 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 ccbd29771de..52d8549201d 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(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; -- 2.34.1