Author: Simon Pilgrim Date: 2021-01-05T13:23:09Z New Revision: dc74d7ed1f651aa61d15b4eaaa32200df1f38d37
URL: https://github.com/llvm/llvm-project/commit/dc74d7ed1f651aa61d15b4eaaa32200df1f38d37 DIFF: https://github.com/llvm/llvm-project/commit/dc74d7ed1f651aa61d15b4eaaa32200df1f38d37.diff LOG: [X86] getMemoryOpCost - use dyn_cast_or_null<StoreInst>. NFCI. Use instead of the isa_and_nonnull<StoreInst> and use the StoreInst::getPointerOperand wrapper instead of a hardcoded Instruction::getOperand. Looks cleaner and avoids a spurious clang static analyzer null dereference warning. Added: Modified: llvm/lib/Target/X86/X86TargetTransformInfo.cpp Removed: ################################################################################ diff --git a/llvm/lib/Target/X86/X86TargetTransformInfo.cpp b/llvm/lib/Target/X86/X86TargetTransformInfo.cpp index 5a342d41fb5e..71455237fb61 100644 --- a/llvm/lib/Target/X86/X86TargetTransformInfo.cpp +++ b/llvm/lib/Target/X86/X86TargetTransformInfo.cpp @@ -3188,11 +3188,10 @@ int X86TTIImpl::getMemoryOpCost(unsigned Opcode, Type *Src, const Instruction *I) { // TODO: Handle other cost kinds. if (CostKind != TTI::TCK_RecipThroughput) { - if (isa_and_nonnull<StoreInst>(I)) { - Value *Ptr = I->getOperand(1); + if (auto *SI = dyn_cast_or_null<StoreInst>(I)) { // Store instruction with index and scale costs 2 Uops. // Check the preceding GEP to identify non-const indices. - if (auto *GEP = dyn_cast<GetElementPtrInst>(Ptr)) { + if (auto *GEP = dyn_cast<GetElementPtrInst>(SI->getPointerOperand())) { if (!all_of(GEP->indices(), [](Value *V) { return isa<Constant>(V); })) return TTI::TCC_Basic * 2; } _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits