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
This commit is contained in:
Chris Lattner 2007-04-28 05:38:52 +00:00
parent 7f3c4d49df
commit bb58b9c3c0
2 changed files with 10 additions and 5 deletions

View File

@ -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

View File

@ -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;