[GlobalISel][CallLowering] Use stripPointerCasts().

A downstream test exposed a simple logic bug with the manual pointer
stripping code, fix that by just using stripPointerCasts() on the value.

I don't think there's a way to expose this issue upstream.
diff --git a/llvm/lib/CodeGen/GlobalISel/CallLowering.cpp b/llvm/lib/CodeGen/GlobalISel/CallLowering.cpp
index 65b5880..2aea679 100644
--- a/llvm/lib/CodeGen/GlobalISel/CallLowering.cpp
+++ b/llvm/lib/CodeGen/GlobalISel/CallLowering.cpp
@@ -50,21 +50,13 @@
     ++i;
   }
 
-  if (const Function *F = CS.getCalledFunction())
+  // Try looking through a bitcast from one function type to another.
+  // Commonly happens with calls to objc_msgSend().
+  const Value *CalleeV = CS.getCalledValue()->stripPointerCasts();
+  if (const Function *F = dyn_cast<Function>(CalleeV))
     Info.Callee = MachineOperand::CreateGA(F, 0);
-  else {
-    // Try looking through a bitcast from one function type to another.
-    // Commonly happens with calls to objc_msgSend().
-    const Value *CalleeV = CS.getCalledValue();
-    auto *BC = dyn_cast<ConstantExpr>(CalleeV);
-    if (BC && BC->getOpcode() == Instruction::BitCast) {
-      if (const auto *F = dyn_cast<Function>(BC->getOperand(0))) {
-        Info.Callee = MachineOperand::CreateGA(F, 0);
-      }
-    } else {
-      Info.Callee = MachineOperand::CreateReg(GetCalleeReg(), false);
-    }
-  }
+  else
+    Info.Callee = MachineOperand::CreateReg(GetCalleeReg(), false);
 
   Info.OrigRet = ArgInfo{ResRegs, CS.getType(), ISD::ArgFlagsTy{}};
   if (!Info.OrigRet.Ty->isVoidTy())