[llvm] b98f6a5 - [VPlan] Cast to VPIRMetadata in getMemoryLocation (NFC) (#169028)

via llvm-commits llvm-commits at lists.llvm.org
Fri Nov 21 06:23:20 PST 2025


Author: Ramkumar Ramachandra
Date: 2025-11-21T14:23:17Z
New Revision: b98f6a54f6ccff67d6eb1cfa25a3f3d919c8f6c9

URL: https://github.com/llvm/llvm-project/commit/b98f6a54f6ccff67d6eb1cfa25a3f3d919c8f6c9
DIFF: https://github.com/llvm/llvm-project/commit/b98f6a54f6ccff67d6eb1cfa25a3f3d919c8f6c9.diff

LOG: [VPlan] Cast to VPIRMetadata in getMemoryLocation (NFC) (#169028)

This allows us to strip an unnecessary TypeSwitch.

Added: 
    

Modified: 
    llvm/lib/Transforms/Vectorize/VPlanUtils.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Transforms/Vectorize/VPlanUtils.cpp b/llvm/lib/Transforms/Vectorize/VPlanUtils.cpp
index 2536d61392ed1..cffc40960e47c 100644
--- a/llvm/lib/Transforms/Vectorize/VPlanUtils.cpp
+++ b/llvm/lib/Transforms/Vectorize/VPlanUtils.cpp
@@ -397,17 +397,14 @@ bool VPBlockUtils::isLatch(const VPBlockBase *VPB,
 
 std::optional<MemoryLocation>
 vputils::getMemoryLocation(const VPRecipeBase &R) {
-  return TypeSwitch<const VPRecipeBase *, std::optional<MemoryLocation>>(&R)
-      .Case<VPWidenMemoryRecipe, VPInterleaveBase, VPReplicateRecipe>(
-          [](auto *S) {
-            MemoryLocation Loc;
-            // Populate noalias metadata from VPIRMetadata.
-            if (MDNode *NoAliasMD = S->getMetadata(LLVMContext::MD_noalias))
-              Loc.AATags.NoAlias = NoAliasMD;
-            if (MDNode *AliasScopeMD =
-                    S->getMetadata(LLVMContext::MD_alias_scope))
-              Loc.AATags.Scope = AliasScopeMD;
-            return Loc;
-          })
-      .Default([](auto *) { return std::nullopt; });
+  auto *M = dyn_cast<VPIRMetadata>(&R);
+  if (!M)
+    return std::nullopt;
+  MemoryLocation Loc;
+  // Populate noalias metadata from VPIRMetadata.
+  if (MDNode *NoAliasMD = M->getMetadata(LLVMContext::MD_noalias))
+    Loc.AATags.NoAlias = NoAliasMD;
+  if (MDNode *AliasScopeMD = M->getMetadata(LLVMContext::MD_alias_scope))
+    Loc.AATags.Scope = AliasScopeMD;
+  return Loc;
 }


        


More information about the llvm-commits mailing list