[InstCombine] Avoid a call to deprecated version of CreateCall.
authorCraig Topper <craig.topper@intel.com>
Wed, 8 Apr 2020 23:59:36 +0000 (16:59 -0700)
committerCraig Topper <craig.topper@intel.com>
Thu, 9 Apr 2020 00:41:16 +0000 (17:41 -0700)
Passing a Value * to CreateCall has to call getPointerElementType
to find the type of the pointer.

In this case we can rely on the fact that Intrinsic::getDeclaration
returns a Function * and use that version of CreateCall.

llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp

index 26837a1..377d0be 100644 (file)
@@ -2324,8 +2324,8 @@ Instruction *InstCombiner::visitCallInst(CallInst &CI) {
     if (match(II->getArgOperand(0), m_OneUse(m_FPExt(m_Value(ExtSrc0)))) &&
         match(II->getArgOperand(1), m_OneUse(m_FPExt(m_Value(ExtSrc1)))) &&
         ExtSrc0->getType() == ExtSrc1->getType()) {
-      Value *F = Intrinsic::getDeclaration(II->getModule(), II->getIntrinsicID(),
-                                           { ExtSrc0->getType() });
+      Function *F = Intrinsic::getDeclaration(
+          II->getModule(), II->getIntrinsicID(), {ExtSrc0->getType()});
       CallInst *NewCall = Builder.CreateCall(F, { ExtSrc0, ExtSrc1 });
       NewCall->copyFastMathFlags(II);
       NewCall->takeName(II);