-template <> inline bool isa<Type, const Value*>(const Value *Val) {
- return Val->getValueType() == Value::TypeVal;
-}
-template <> inline bool isa<Type, Value*>(Value *Val) {
- return Val->getValueType() == Value::TypeVal;
-}
-template <> inline bool isa<Constant, const Value*>(const Value *Val) {
- return Val->getValueType() == Value::ConstantVal;
-}
-template <> inline bool isa<Constant, Value*>(Value *Val) {
- return Val->getValueType() == Value::ConstantVal;
-}
-template <> inline bool isa<FunctionArgument, const Value*>(const Value *Val) {
- return Val->getValueType() == Value::FunctionArgumentVal;
+template <> inline bool isa_impl<Type, Value>(const Value &Val) {
+ return Val.getValueType() == Value::TypeVal;