OSDN Git Service

implement simplify_type for PATypeHolder so that isa<FooType>(PATypeHolder)
authorChris Lattner <sabre@nondot.org>
Sat, 27 Dec 2008 07:47:40 +0000 (07:47 +0000)
committerChris Lattner <sabre@nondot.org>
Sat, 27 Dec 2008 07:47:40 +0000 (07:47 +0000)
works.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61448 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/AbstractTypeUser.h

index f7fabfc..80656d8 100644 (file)
@@ -33,6 +33,7 @@ namespace llvm {
 
 class Type;
 class DerivedType;
+template<typename T> struct simplify_type;
 
 /// The AbstractTypeUser class is an interface to be implemented by classes who
 /// could possibly use an abstract type.  Abstract types are denoted by the
@@ -174,6 +175,21 @@ private:
   void dropRef();
 };
 
+// simplify_type - Allow clients to treat uses just like values when using
+// casting operators.
+template<> struct simplify_type<PATypeHolder> {
+  typedef const Type* SimpleType;
+  static SimpleType getSimplifiedValue(const PATypeHolder &Val) {
+    return static_cast<SimpleType>(Val.get());
+  }
+};
+template<> struct simplify_type<const PATypeHolder> {
+  typedef const Type* SimpleType;
+  static SimpleType getSimplifiedValue(const PATypeHolder &Val) {
+    return static_cast<SimpleType>(Val.get());
+  }
+};
+  
 } // End llvm namespace
 
 #endif