Implement correct isa<UnaryInstruction>, problem reported by "ST".
authorChris Lattner <sabre@nondot.org>
Sat, 8 Dec 2007 04:37:52 +0000 (04:37 +0000)
committerChris Lattner <sabre@nondot.org>
Sat, 8 Dec 2007 04:37:52 +0000 (04:37 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@44697 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/InstrTypes.h

index 22ad342d7fbb1e63e9276f586f9ded477fdf5b8d..a6a8fff40ce9707fdca087ee439378ebca94bbdb 100644 (file)
@@ -108,6 +108,20 @@ public:
     Op = Val;
   }
   unsigned getNumOperands() const { return 1; }
+  
+  // Methods for support type inquiry through isa, cast, and dyn_cast:
+  static inline bool classof(const UnaryInstruction *) { return true; }
+  static inline bool classof(const Instruction *I) {
+    return I->getOpcode() == Instruction::Malloc ||
+           I->getOpcode() == Instruction::Alloca ||
+           I->getOpcode() == Instruction::Free ||
+           I->getOpcode() == Instruction::Load ||
+           I->getOpcode() == Instruction::VAArg ||
+           (I->getOpcode() >= CastOpsBegin && I->getOpcode() < CastOpsEnd);
+  }
+  static inline bool classof(const Value *V) {
+    return isa<Instruction>(V) && classof(cast<Instruction>(V));
+  }
 };
 
 //===----------------------------------------------------------------------===//