summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2007-04-28 05:38:52 +0000
committerChris Lattner <sabre@nondot.org>2007-04-28 05:38:52 +0000
commitbb58b9c3c03dda9d03e92a9dd2a0d00dfb922331 (patch)
tree3fb7d5122583e22e6c1b02b08a2134099d7eb375
parent7f3c4d49df119f5f01e462fc50bed4eb1704d7d6 (diff)
downloadllvm-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.h5
-rw-r--r--lib/VMCore/ValueTypes.cpp10
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;