[IR] Replace `isa<TerminatorInst>` with `isTerminator()`.

This is a bit awkward in a handful of places where we didn't even have
an instruction and now we have to see if we can build one. But on the
whole, this seems like a win and at worst a reasonable cost for removing
`TerminatorInst`.

All of this is part of the removal of `TerminatorInst` from the
`Instruction` type hierarchy.

llvm-svn: 340701
diff --git a/llvm/lib/Transforms/InstCombine/InstCombinePHI.cpp b/llvm/lib/Transforms/InstCombine/InstCombinePHI.cpp
index 911ece3..0289abe 100644
--- a/llvm/lib/Transforms/InstCombine/InstCombinePHI.cpp
+++ b/llvm/lib/Transforms/InstCombine/InstCombinePHI.cpp
@@ -222,8 +222,11 @@
   // instruction, do not do it.
   if (std::any_of(AvailablePtrVals.begin(), AvailablePtrVals.end(),
                   [&](Value *V) {
-                    return (V->getType() != IntToPtr->getType()) &&
-                           isa<TerminatorInst>(V);
+                    if (V->getType() == IntToPtr->getType())
+                      return false;
+
+                    auto *Inst = dyn_cast<Instruction>(V);
+                    return Inst && Inst->isTerminator();
                   }))
     return nullptr;