[llvm] r309268 - [InlineCost, NFC] Change CallAnalyzer::isGEPFree to use TTI::getUserCost instead of TTI::getGEPCost
Evgeny Astigeevich via llvm-commits
llvm-commits at lists.llvm.org
Thu Jul 27 05:49:27 PDT 2017
Author: eastig
Date: Thu Jul 27 05:49:27 2017
New Revision: 309268
URL: http://llvm.org/viewvc/llvm-project?rev=309268&view=rev
Log:
[InlineCost, NFC] Change CallAnalyzer::isGEPFree to use TTI::getUserCost instead of TTI::getGEPCost
Currently CallAnalyzer::isGEPFree uses TTI::getGEPCost to check if GEP is free.
TTI::getGEPCost cannot handle cases when GEPs participate in Def-Use dependencies
(see https://reviews.llvm.org/D31186 for example).
There is TTI::getUserCost which can calculate the cost more accurately by
taking dependencies into account.
Differential Revision: https://reviews.llvm.org/D33685
Modified:
llvm/trunk/lib/Analysis/InlineCost.cpp
Modified: llvm/trunk/lib/Analysis/InlineCost.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Analysis/InlineCost.cpp?rev=309268&r1=309267&r2=309268&view=diff
==============================================================================
--- llvm/trunk/lib/Analysis/InlineCost.cpp (original)
+++ llvm/trunk/lib/Analysis/InlineCost.cpp Thu Jul 27 05:49:27 2017
@@ -348,15 +348,14 @@ bool CallAnalyzer::accumulateGEPOffset(G
///
/// Respects any simplified values known during the analysis of this callsite.
bool CallAnalyzer::isGEPFree(GetElementPtrInst &GEP) {
- SmallVector<Value *, 4> Indices;
+ SmallVector<Value *, 4> Operands;
+ Operands.push_back(GEP.getOperand(0));
for (User::op_iterator I = GEP.idx_begin(), E = GEP.idx_end(); I != E; ++I)
if (Constant *SimpleOp = SimplifiedValues.lookup(*I))
- Indices.push_back(SimpleOp);
+ Operands.push_back(SimpleOp);
else
- Indices.push_back(*I);
- return TargetTransformInfo::TCC_Free ==
- TTI.getGEPCost(GEP.getSourceElementType(), GEP.getPointerOperand(),
- Indices);
+ Operands.push_back(*I);
+ return TargetTransformInfo::TCC_Free == TTI.getUserCost(&GEP, Operands);
}
bool CallAnalyzer::visitAlloca(AllocaInst &I) {
More information about the llvm-commits
mailing list