[llvm] 676f280 - [CostModel][AArch64] Don't dereference CostTblEntry before null check.
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Wed Sep 29 08:42:11 PDT 2021
Author: Simon Pilgrim
Date: 2021-09-29T16:35:29+01:00
New Revision: 676f2809b5eb632cebac672112f42148771f4617
URL: https://github.com/llvm/llvm-project/commit/676f2809b5eb632cebac672112f42148771f4617
DIFF: https://github.com/llvm/llvm-project/commit/676f2809b5eb632cebac672112f42148771f4617.diff
LOG: [CostModel][AArch64] Don't dereference CostTblEntry before null check.
Fix static analysis warning that we check for null Entry after dereferencing it.
I don't think this can actually happen as i8/i16 should legalize to use the i32 path which should return a cost - but I'd rather play it safe that rely on an implicit type legalization.
Added:
Modified:
llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp b/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp
index 87ff9393f089..1f0494621b69 100644
--- a/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp
+++ b/llvm/lib/Target/AArch64/AArch64TargetTransformInfo.cpp
@@ -289,13 +289,15 @@ AArch64TTIImpl::getIntrinsicInstrCost(const IntrinsicCostAttributes &ICA,
const auto LegalisationCost = TLI->getTypeLegalizationCost(DL, RetTy);
const auto *Entry =
CostTableLookup(BitreverseTbl, ICA.getID(), LegalisationCost.second);
- // Cost Model is using the legal type(i32) that i8 and i16 will be converted
- // to +1 so that we match the actual lowering cost
- if (TLI->getValueType(DL, RetTy, true) == MVT::i8 ||
- TLI->getValueType(DL, RetTy, true) == MVT::i16)
- return LegalisationCost.first * Entry->Cost + 1;
- if (Entry)
+ if (Entry) {
+ // Cost Model is using the legal type(i32) that i8 and i16 will be
+ // converted to +1 so that we match the actual lowering cost
+ if (TLI->getValueType(DL, RetTy, true) == MVT::i8 ||
+ TLI->getValueType(DL, RetTy, true) == MVT::i16)
+ return LegalisationCost.first * Entry->Cost + 1;
+
return LegalisationCost.first * Entry->Cost;
+ }
break;
}
case Intrinsic::ctpop: {
More information about the llvm-commits
mailing list