Use the basic cost if a GEP is not used as addressing mode
authorJun Bum Lim <junbuml@codeaurora.org>
Fri, 29 Sep 2017 14:50:16 +0000 (14:50 +0000)
committerJun Bum Lim <junbuml@codeaurora.org>
Fri, 29 Sep 2017 14:50:16 +0000 (14:50 +0000)
commit0e16a59e83f8141bf4d84df5fe0d402688913ee3
tree13a5b01aea9374a3244698a4cfc73267a63410a4
parentc9e363ac69f0cb4e9a2198ef9a475c21c695d694
Use the basic cost if a GEP is not used as addressing mode

Summary:
Currently, getGEPCost() returns TCC_FREE whenever a GEP is a legal addressing mode in the target.
However, since it doesn't check its actual users, it will return FREE even in cases
where the GEP cannot be folded away as a part of actual addressing mode.
For example, if an user of the GEP is a call instruction taking the GEP as a parameter,
then the GEP may not be folded in isel.

Reviewers: hfinkel, efriedma, mcrosier, jingyue, haicheng

Reviewed By: hfinkel

Subscribers: javed.absar, llvm-commits

Differential Revision: https://reviews.llvm.org/D38085

llvm-svn: 314517
llvm/include/llvm/Analysis/TargetTransformInfo.h
llvm/include/llvm/Analysis/TargetTransformInfoImpl.h
llvm/include/llvm/CodeGen/BasicTTIImpl.h
llvm/include/llvm/IR/Operator.h
llvm/lib/Analysis/TargetTransformInfo.cpp
llvm/lib/Transforms/Scalar/NaryReassociate.cpp
llvm/lib/Transforms/Scalar/StraightLineStrengthReduce.cpp
llvm/test/Analysis/CostModel/AArch64/gep.ll
llvm/test/Analysis/CostModel/X86/vector_gep.ll