[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