From: Craig Topper Date: Wed, 22 Apr 2020 17:48:09 +0000 (-0700) Subject: [CallSite removal][ValueTracking] Use CallBase instead of ImmutableCallSite for getIn... X-Git-Tag: llvmorg-12-init~8166 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=be04aba6fcd692d3a19edbac290e0ae6517c404d;p=platform%2Fupstream%2Fllvm.git [CallSite removal][ValueTracking] Use CallBase instead of ImmutableCallSite for getIntrinsicForCallSite. NFC Differential Revision: https://reviews.llvm.org/D78613 --- diff --git a/llvm/include/llvm/Analysis/ValueTracking.h b/llvm/include/llvm/Analysis/ValueTracking.h index ec7edff..fa0da0e 100644 --- a/llvm/include/llvm/Analysis/ValueTracking.h +++ b/llvm/include/llvm/Analysis/ValueTracking.h @@ -17,10 +17,9 @@ #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/Optional.h" #include "llvm/ADT/SmallSet.h" -#include "llvm/IR/CallSite.h" #include "llvm/IR/Constants.h" #include "llvm/IR/DataLayout.h" -#include "llvm/IR/Instruction.h" +#include "llvm/IR/InstrTypes.h" #include "llvm/IR/Intrinsics.h" #include #include @@ -33,6 +32,7 @@ class AssumptionCache; class DominatorTree; class GEPOperator; class IntrinsicInst; +class LoadInst; class WithOverflowInst; struct KnownBits; class Loop; @@ -210,7 +210,7 @@ class Value; /// Map a call instruction to an intrinsic ID. Libcalls which have equivalent /// intrinsics are treated as-if they were intrinsics. - Intrinsic::ID getIntrinsicForCallSite(ImmutableCallSite ICS, + Intrinsic::ID getIntrinsicForCallSite(const CallBase &CB, const TargetLibraryInfo *TLI); /// Return true if we can prove that the specified FP value is never equal to diff --git a/llvm/lib/Analysis/ValueTracking.cpp b/llvm/lib/Analysis/ValueTracking.cpp index e547447..be5d18f 100644 --- a/llvm/lib/Analysis/ValueTracking.cpp +++ b/llvm/lib/Analysis/ValueTracking.cpp @@ -3074,9 +3074,9 @@ bool llvm::ComputeMultiple(Value *V, unsigned Base, Value *&Multiple, return false; } -Intrinsic::ID llvm::getIntrinsicForCallSite(ImmutableCallSite ICS, +Intrinsic::ID llvm::getIntrinsicForCallSite(const CallBase &CB, const TargetLibraryInfo *TLI) { - const Function *F = ICS.getCalledFunction(); + const Function *F = CB.getCalledFunction(); if (!F) return Intrinsic::not_intrinsic; @@ -3093,7 +3093,7 @@ Intrinsic::ID llvm::getIntrinsicForCallSite(ImmutableCallSite ICS, if (!F || F->hasLocalLinkage() || !TLI->getLibFunc(*F, Func)) return Intrinsic::not_intrinsic; - if (!ICS.onlyReadsMemory()) + if (!CB.onlyReadsMemory()) return Intrinsic::not_intrinsic; // Otherwise check if we have a call to a function that can be turned into a @@ -3214,7 +3214,7 @@ bool llvm::CannotBeNegativeZero(const Value *V, const TargetLibraryInfo *TLI, return true; if (auto *Call = dyn_cast(Op)) { - Intrinsic::ID IID = getIntrinsicForCallSite(Call, TLI); + Intrinsic::ID IID = getIntrinsicForCallSite(*Call, TLI); switch (IID) { default: break; @@ -3311,7 +3311,7 @@ static bool cannotBeOrderedLessThanZeroImpl(const Value *V, Depth + 1); case Instruction::Call: const auto *CI = cast(I); - Intrinsic::ID IID = getIntrinsicForCallSite(CI, TLI); + Intrinsic::ID IID = getIntrinsicForCallSite(*CI, TLI); switch (IID) { default: break; diff --git a/llvm/lib/Analysis/VectorUtils.cpp b/llvm/lib/Analysis/VectorUtils.cpp index 377a094..59bff32 100644 --- a/llvm/lib/Analysis/VectorUtils.cpp +++ b/llvm/lib/Analysis/VectorUtils.cpp @@ -112,7 +112,7 @@ bool llvm::hasVectorInstrinsicScalarOpd(Intrinsic::ID ID, /// its ID, in case it does not found it return not_intrinsic. Intrinsic::ID llvm::getVectorIntrinsicIDForCall(const CallInst *CI, const TargetLibraryInfo *TLI) { - Intrinsic::ID ID = getIntrinsicForCallSite(CI, TLI); + Intrinsic::ID ID = getIntrinsicForCallSite(*CI, TLI); if (ID == Intrinsic::not_intrinsic) return Intrinsic::not_intrinsic; diff --git a/llvm/lib/Transforms/IPO/IPConstantPropagation.cpp b/llvm/lib/Transforms/IPO/IPConstantPropagation.cpp index fc62ec4..40217b6 100644 --- a/llvm/lib/Transforms/IPO/IPConstantPropagation.cpp +++ b/llvm/lib/Transforms/IPO/IPConstantPropagation.cpp @@ -17,6 +17,7 @@ #include "llvm/ADT/SmallVector.h" #include "llvm/ADT/Statistic.h" #include "llvm/Analysis/ValueTracking.h" +#include "llvm/IR/CallSite.h" #include "llvm/IR/Constants.h" #include "llvm/IR/Instructions.h" #include "llvm/IR/Module.h" diff --git a/llvm/lib/Transforms/Scalar/SpeculateAroundPHIs.cpp b/llvm/lib/Transforms/Scalar/SpeculateAroundPHIs.cpp index cd7bfb2..5df366f 100644 --- a/llvm/lib/Transforms/Scalar/SpeculateAroundPHIs.cpp +++ b/llvm/lib/Transforms/Scalar/SpeculateAroundPHIs.cpp @@ -14,6 +14,7 @@ #include "llvm/Analysis/TargetTransformInfo.h" #include "llvm/Analysis/ValueTracking.h" #include "llvm/IR/BasicBlock.h" +#include "llvm/IR/CallSite.h" #include "llvm/IR/IRBuilder.h" #include "llvm/IR/Instructions.h" #include "llvm/IR/IntrinsicInst.h" diff --git a/llvm/unittests/Analysis/ValueTrackingTest.cpp b/llvm/unittests/Analysis/ValueTrackingTest.cpp index 51676a2..250e4ee 100644 --- a/llvm/unittests/Analysis/ValueTrackingTest.cpp +++ b/llvm/unittests/Analysis/ValueTrackingTest.cpp @@ -10,6 +10,7 @@ #include "llvm/AsmParser/Parser.h" #include "llvm/IR/Function.h" #include "llvm/IR/InstIterator.h" +#include "llvm/IR/Instructions.h" #include "llvm/IR/LLVMContext.h" #include "llvm/IR/Module.h" #include "llvm/Support/ErrorHandling.h"