[llvm] [NFC] Add assertions for Src and Dst vec types in VecCombine folding (PR #134432)
via llvm-commits
llvm-commits at lists.llvm.org
Mon Apr 7 14:04:43 PDT 2025
https://github.com/calebwat updated https://github.com/llvm/llvm-project/pull/134432
>From ae4f0379b9b7e19d5764a714451f0b9aba815d7e Mon Sep 17 00:00:00 2001
From: "Watts, Caleb" <caleb.watts at intel.com>
Date: Fri, 4 Apr 2025 11:40:28 -0700
Subject: [PATCH 1/2] [NFC] Add assertions for Src and Dst vec types in
VecCombine folding
SrcVecTy and DstVecTy are used without a null check, and originate from a dyn_cast. This patch adds an assertion that these values are non-null before they are used/dereferenced.
---
llvm/lib/Transforms/Vectorize/VectorCombine.cpp | 3 +++
1 file changed, 3 insertions(+)
diff --git a/llvm/lib/Transforms/Vectorize/VectorCombine.cpp b/llvm/lib/Transforms/Vectorize/VectorCombine.cpp
index 4bfe41a5ed00d..fc04266cac51b 100644
--- a/llvm/lib/Transforms/Vectorize/VectorCombine.cpp
+++ b/llvm/lib/Transforms/Vectorize/VectorCombine.cpp
@@ -2052,6 +2052,9 @@ bool VectorCombine::foldShuffleOfSelects(Instruction &I) {
auto *SrcVecTy = dyn_cast<FixedVectorType>(T1->getType());
auto *DstVecTy = dyn_cast<FixedVectorType>(I.getType());
+ assert(SrcVecTy && DstVecTy &&
+ "Expected shuffle/select vector types to be defined");
+
auto SK = TargetTransformInfo::SK_PermuteTwoSrc;
auto SelOp = Instruction::Select;
InstructionCost OldCost = TTI.getCmpSelInstrCost(
>From 16fffdf55ae9b5efac82dd59a20b2328173b1130 Mon Sep 17 00:00:00 2001
From: "Watts, Caleb" <caleb.watts at intel.com>
Date: Mon, 7 Apr 2025 13:59:17 -0700
Subject: [PATCH 2/2] Change dyn_cast<> then assert to cast<> per review
suggestions
---
llvm/lib/Transforms/Vectorize/VectorCombine.cpp | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/llvm/lib/Transforms/Vectorize/VectorCombine.cpp b/llvm/lib/Transforms/Vectorize/VectorCombine.cpp
index fc04266cac51b..e83934a29f9bb 100644
--- a/llvm/lib/Transforms/Vectorize/VectorCombine.cpp
+++ b/llvm/lib/Transforms/Vectorize/VectorCombine.cpp
@@ -2050,10 +2050,8 @@ bool VectorCombine::foldShuffleOfSelects(Instruction &I) {
(SI0FOp->getFastMathFlags() != SI1FOp->getFastMathFlags())))
return false;
- auto *SrcVecTy = dyn_cast<FixedVectorType>(T1->getType());
- auto *DstVecTy = dyn_cast<FixedVectorType>(I.getType());
- assert(SrcVecTy && DstVecTy &&
- "Expected shuffle/select vector types to be defined");
+ auto *SrcVecTy = cast<FixedVectorType>(T1->getType());
+ auto *DstVecTy = cast<FixedVectorType>(I.getType());
auto SK = TargetTransformInfo::SK_PermuteTwoSrc;
auto SelOp = Instruction::Select;
More information about the llvm-commits
mailing list