[Mlir-commits] [mlir] [MLIR] Use make_isa_range instead of dyn_cast/continue (NFC). (PR #223974)

Florian Hahn llvmlistbot at llvm.org
Wed Sep 16 12:05:19 PDT 2026


https://github.com/fhahn updated https://github.com/llvm/llvm-project/pull/223974

>From 8a7546d1802cd55955e94e63e4c2863815b29b2f Mon Sep 17 00:00:00 2001
From: Florian Hahn <flo at fhahn.com>
Date: Tue, 15 Sep 2026 22:02:37 +0100
Subject: [PATCH 1/2] [MLIR] Use make_isa_range instead of dyn_cast/continue
 (NFC).

Simplify loops using dyn_cast + early continue using make_isa_range,
added in https://github.com/llvm/llvm-project/pull/223414.

Aided by Opus 5.
---
 .../ConvertToEmitC/ConvertToEmitCPass.cpp     | 16 ++++++---------
 .../ConvertToLLVM/ConvertToLLVMPass.cpp       | 20 ++++++++-----------
 .../GPUCommon/GPUToLLVMConversion.cpp         |  8 +++-----
 .../Conversion/VectorToGPU/VectorToGPU.cpp    |  6 ++----
 mlir/lib/Conversion/XeVMToLLVM/XeVMToLLVM.cpp |  6 +-----
 .../Dialect/Affine/Transforms/LoopFusion.cpp  |  9 ++++-----
 mlir/lib/Dialect/Affine/Utils/Utils.cpp       | 17 +++++++---------
 .../Transforms/InlinerInterfaceImpl.cpp       |  6 ++----
 .../TransformOps/LinalgTransformOps.cpp       |  6 ++----
 .../XeGPU/Transforms/XeGPULayoutImpl.cpp      |  5 +----
 mlir/lib/Pass/PassStatistics.cpp              | 10 ++++------
 mlir/lib/Target/SMTLIB/ExportSMTLIB.cpp       |  7 ++-----
 mlir/lib/Transforms/Utils/RegionUtils.cpp     | 12 ++++-------
 mlir/tools/mlir-tblgen/OpDefinitionsGen.cpp   |  6 ++----
 14 files changed, 48 insertions(+), 86 deletions(-)

diff --git a/mlir/lib/Conversion/ConvertToEmitC/ConvertToEmitCPass.cpp b/mlir/lib/Conversion/ConvertToEmitC/ConvertToEmitCPass.cpp
index ca66af051a4e8..23072580acd96 100644
--- a/mlir/lib/Conversion/ConvertToEmitC/ConvertToEmitCPass.cpp
+++ b/mlir/lib/Conversion/ConvertToEmitC/ConvertToEmitCPass.cpp
@@ -80,12 +80,10 @@ class LoadDependentDialectExtension : public DialectExtensionBase {
   void apply(MLIRContext *context,
              MutableArrayRef<Dialect *> dialects) const final {
     LLVM_DEBUG(llvm::dbgs() << "Convert to EmitC extension load\n");
-    for (Dialect *dialect : dialects) {
-      auto *iface = dyn_cast<ConvertToEmitCPatternInterface>(dialect);
-      if (!iface)
-        continue;
+    for (ConvertToEmitCPatternInterface *iface :
+         llvm::make_isa_range<ConvertToEmitCPatternInterface>(dialects)) {
       LLVM_DEBUG(llvm::dbgs() << "Convert to EmitC found dialect interface for "
-                              << dialect->getNamespace() << "\n");
+                              << iface->getDialect()->getNamespace() << "\n");
     }
   }
 
@@ -212,12 +210,10 @@ LogicalResult ConvertToEmitCPassInterface::visitInterfaces(
   } else {
     // Normal mode: Populate all patterns from all dialects that implement the
     // interface.
-    for (Dialect *dialect : context->getLoadedDialects()) {
-      auto *iface = dyn_cast<ConvertToEmitCPatternInterface>(dialect);
-      if (!iface)
-        continue;
+    std::vector<Dialect *> dialects = context->getLoadedDialects();
+    for (ConvertToEmitCPatternInterface *iface :
+         llvm::make_isa_range<ConvertToEmitCPatternInterface>(dialects))
       visitor(iface);
-    }
   }
   return success();
 }
diff --git a/mlir/lib/Conversion/ConvertToLLVM/ConvertToLLVMPass.cpp b/mlir/lib/Conversion/ConvertToLLVM/ConvertToLLVMPass.cpp
index dbeca5736ec62..02d0f67a37703 100644
--- a/mlir/lib/Conversion/ConvertToLLVM/ConvertToLLVMPass.cpp
+++ b/mlir/lib/Conversion/ConvertToLLVM/ConvertToLLVMPass.cpp
@@ -81,12 +81,10 @@ class LoadDependentDialectExtension : public DialectExtensionBase {
   void apply(MLIRContext *context,
              MutableArrayRef<Dialect *> dialects) const final {
     LDBG() << "Convert to LLVM extension load";
-    for (Dialect *dialect : dialects) {
-      auto *iface = dyn_cast<ConvertToLLVMPatternInterface>(dialect);
-      if (!iface)
-        continue;
+    for (ConvertToLLVMPatternInterface *iface :
+         llvm::make_isa_range<ConvertToLLVMPatternInterface>(dialects)) {
       LDBG() << "Convert to LLVM found dialect interface for "
-             << dialect->getNamespace();
+             << iface->getDialect()->getNamespace();
       iface->loadDependentDialects(context);
     }
   }
@@ -273,14 +271,12 @@ LogicalResult ConvertToLLVMPassInterface::visitInterfaces(
   } else {
     // Normal mode: Populate all patterns from all dialects that implement the
     // interface.
-    for (Dialect *dialect : context->getLoadedDialects()) {
-      // First time we encounter this dialect: if it implements the interface,
-      // let's populate patterns !
-      auto *iface = dyn_cast<ConvertToLLVMPatternInterface>(dialect);
-      if (!iface)
-        continue;
+    // First time we encounter this dialect: if it implements the interface,
+    // let's populate patterns !
+    std::vector<Dialect *> dialects = context->getLoadedDialects();
+    for (ConvertToLLVMPatternInterface *iface :
+         llvm::make_isa_range<ConvertToLLVMPatternInterface>(dialects))
       visitor(iface);
-    }
   }
   return success();
 }
diff --git a/mlir/lib/Conversion/GPUCommon/GPUToLLVMConversion.cpp b/mlir/lib/Conversion/GPUCommon/GPUToLLVMConversion.cpp
index 201a0bc84aeb2..6d5b10c3002e0 100644
--- a/mlir/lib/Conversion/GPUCommon/GPUToLLVMConversion.cpp
+++ b/mlir/lib/Conversion/GPUCommon/GPUToLLVMConversion.cpp
@@ -549,12 +549,10 @@ void GpuToLLVMConversionPass::runOnOperation() {
 
   // Populate all patterns from all dialects that implement the
   // `ConvertToLLVMPatternInterface` interface.
-  for (Dialect *dialect : context->getLoadedDialects()) {
-    auto *iface = dyn_cast<ConvertToLLVMPatternInterface>(dialect);
-    if (!iface)
-      continue;
+  std::vector<Dialect *> dialects = context->getLoadedDialects();
+  for (ConvertToLLVMPatternInterface *iface :
+       llvm::make_isa_range<ConvertToLLVMPatternInterface>(dialects))
     iface->populateConvertToLLVMConversionPatterns(target, converter, patterns);
-  }
 
   // Preserve GPU modules and binaries. Modules are preserved as they can be
   // converted later by `gpu-module-to-binary`.
diff --git a/mlir/lib/Conversion/VectorToGPU/VectorToGPU.cpp b/mlir/lib/Conversion/VectorToGPU/VectorToGPU.cpp
index 1e83935ffa594..687a21541e4cb 100644
--- a/mlir/lib/Conversion/VectorToGPU/VectorToGPU.cpp
+++ b/mlir/lib/Conversion/VectorToGPU/VectorToGPU.cpp
@@ -554,10 +554,8 @@ static const char *inferFragType(Operation *op) {
       return inferFragType(userOp);
   }
 
-  for (Operation *users : op->getUsers()) {
-    auto contract = dyn_cast<vector::ContractionOp>(users);
-    if (!contract)
-      continue;
+  for (vector::ContractionOp contract :
+       llvm::make_isa_range<vector::ContractionOp>(op->getUsers())) {
     assert(op->getNumResults() == 1);
     if (contract.getLhs() == op->getResult(0))
       return "AOp";
diff --git a/mlir/lib/Conversion/XeVMToLLVM/XeVMToLLVM.cpp b/mlir/lib/Conversion/XeVMToLLVM/XeVMToLLVM.cpp
index d9cb0e2eed3e7..e60a498b4388c 100644
--- a/mlir/lib/Conversion/XeVMToLLVM/XeVMToLLVM.cpp
+++ b/mlir/lib/Conversion/XeVMToLLVM/XeVMToLLVM.cpp
@@ -351,11 +351,7 @@ buildCacheControlPayloads(ArrayRef<Attribute> attrs) {
   SmallVector<std::string> payloads;
   llvm::StringMap<bool> seen;
 
-  for (Attribute a : attrs) {
-    auto arr = dyn_cast<ArrayAttr>(a);
-    if (!arr)
-      continue;
-
+  for (ArrayAttr arr : llvm::make_isa_range<ArrayAttr>(attrs)) {
     auto vals = arr.getValue();
     assert(vals.size() == 3 &&
            "Expected exactly 3 integer values (Token, CacheLevel, "
diff --git a/mlir/lib/Dialect/Affine/Transforms/LoopFusion.cpp b/mlir/lib/Dialect/Affine/Transforms/LoopFusion.cpp
index 1ec5fbfef50c3..a7381e53d9335 100644
--- a/mlir/lib/Dialect/Affine/Transforms/LoopFusion.cpp
+++ b/mlir/lib/Dialect/Affine/Transforms/LoopFusion.cpp
@@ -1395,13 +1395,12 @@ struct GreedyFusion {
     // Search for siblings which load the same memref block argument.
     Block *block = dstNode->op->getBlock();
     for (unsigned i = 0, e = block->getNumArguments(); i != e; ++i) {
-      for (Operation *user : block->getArgument(i).getUsers()) {
-        auto loadOp = dyn_cast<AffineReadOpInterface>(user);
-        if (!loadOp)
-          continue;
+      for (AffineReadOpInterface loadOp :
+           llvm::make_isa_range<AffineReadOpInterface>(
+               block->getArgument(i).getUsers())) {
         // Gather loops surrounding 'use'.
         SmallVector<AffineForOp, 4> loops;
-        getAffineForIVs(*user, &loops);
+        getAffineForIVs(*loadOp.getOperation(), &loops);
         // Skip 'use' if it is not within a loop nest.
         // Find the surrounding affine.for nested immediately within the
         // block.
diff --git a/mlir/lib/Dialect/Affine/Utils/Utils.cpp b/mlir/lib/Dialect/Affine/Utils/Utils.cpp
index e2ad3151a934c..cec5cb726dcc8 100644
--- a/mlir/lib/Dialect/Affine/Utils/Utils.cpp
+++ b/mlir/lib/Dialect/Affine/Utils/Utils.cpp
@@ -842,10 +842,9 @@ static void forwardStoreToLoad(
   // to replace the load, if any.
   Operation *lastWriteStoreOp = nullptr;
 
-  for (auto *user : loadOp.getMemRef().getUsers()) {
-    auto storeOp = dyn_cast<AffineWriteOpInterface>(user);
-    if (!storeOp)
-      continue;
+  for (AffineWriteOpInterface storeOp :
+       llvm::make_isa_range<AffineWriteOpInterface>(
+           loadOp.getMemRef().getUsers())) {
     MemRefAccess srcAccess(storeOp);
     MemRefAccess destAccess(loadOp);
 
@@ -916,12 +915,10 @@ static void findUnusedStore(AffineWriteOpInterface writeA,
                             PostDominanceInfo &postDominanceInfo,
                             llvm::function_ref<bool(Value, Value)> mayAlias) {
 
-  for (Operation *user : writeA.getMemRef().getUsers()) {
-    // Only consider writing operations.
-    auto writeB = dyn_cast<AffineWriteOpInterface>(user);
-    if (!writeB)
-      continue;
-
+  // Only consider writing operations.
+  for (AffineWriteOpInterface writeB :
+       llvm::make_isa_range<AffineWriteOpInterface>(
+           writeA.getMemRef().getUsers())) {
     // The operations must be distinct.
     if (writeB == writeA)
       continue;
diff --git a/mlir/lib/Dialect/LLVMIR/Transforms/InlinerInterfaceImpl.cpp b/mlir/lib/Dialect/LLVMIR/Transforms/InlinerInterfaceImpl.cpp
index 9409141f6e45a..12a3ff75bc33b 100644
--- a/mlir/lib/Dialect/LLVMIR/Transforms/InlinerInterfaceImpl.cpp
+++ b/mlir/lib/Dialect/LLVMIR/Transforms/InlinerInterfaceImpl.cpp
@@ -280,10 +280,8 @@ static void createNewAliasScopesFromNoAliasParameter(
   SetVector<LLVM::SSACopyOp> ssaCopies;
   SetVector<LLVM::SSACopyOp> noAliasParams;
   for (Value argument : cast<LLVM::CallOp>(call).getArgOperands()) {
-    for (Operation *user : argument.getUsers()) {
-      auto ssaCopy = llvm::dyn_cast<LLVM::SSACopyOp>(user);
-      if (!ssaCopy)
-        continue;
+    for (LLVM::SSACopyOp ssaCopy :
+         llvm::make_isa_range<LLVM::SSACopyOp>(argument.getUsers())) {
       ssaCopies.insert(ssaCopy);
 
       if (!ssaCopy->hasDiscardableAttr(LLVM::LLVMDialect::getNoAliasAttrName()))
diff --git a/mlir/lib/Dialect/Linalg/TransformOps/LinalgTransformOps.cpp b/mlir/lib/Dialect/Linalg/TransformOps/LinalgTransformOps.cpp
index c42509540c6b5..71f6157b6ed3f 100644
--- a/mlir/lib/Dialect/Linalg/TransformOps/LinalgTransformOps.cpp
+++ b/mlir/lib/Dialect/Linalg/TransformOps/LinalgTransformOps.cpp
@@ -1925,10 +1925,8 @@ PackGreedilyOp::apply(transform::TransformRewriter &rewriter,
                       transform::TransformResults &transformResults,
                       transform::TransformState &state) {
   SmallVector<Operation *> results;
-  for (Operation *op : state.getPayloadOps(getTarget())) {
-    auto linalgOp = dyn_cast<LinalgOp>(op);
-    if (!linalgOp)
-      continue;
+  for (LinalgOp linalgOp :
+       llvm::make_isa_range<LinalgOp>(state.getPayloadOps(getTarget()))) {
     // linalgOp will be replaced and the insertion point may be invalidated if
     // we set it before -> set it after.
     rewriter.setInsertionPointAfter(linalgOp);
diff --git a/mlir/lib/Dialect/XeGPU/Transforms/XeGPULayoutImpl.cpp b/mlir/lib/Dialect/XeGPU/Transforms/XeGPULayoutImpl.cpp
index f696020b2de12..9ec8c4c677091 100644
--- a/mlir/lib/Dialect/XeGPU/Transforms/XeGPULayoutImpl.cpp
+++ b/mlir/lib/Dialect/XeGPU/Transforms/XeGPULayoutImpl.cpp
@@ -2889,10 +2889,7 @@ static xegpu::DistributeLayoutAttr getLoopCarriedLayoutForYieldOperand(
   if (it == mapping.end())
     return nullptr;
   xegpu::DistributeLayoutAttr iterArgLayout;
-  for (Value input : it->second) {
-    auto arg = dyn_cast<BlockArgument>(input);
-    if (!arg)
-      continue;
+  for (BlockArgument arg : llvm::make_isa_range<BlockArgument>(it->second)) {
     xegpu::DistributeLayoutAttr layout = xegpu::getDistributeLayoutAttr(arg);
     assert((!iterArgLayout || !layout || iterArgLayout.isEqualTo(layout)) &&
            "region inputs fed by one terminator operand disagree on layout");
diff --git a/mlir/lib/Pass/PassStatistics.cpp b/mlir/lib/Pass/PassStatistics.cpp
index 01191aa824440..cedcc059fbd6b 100644
--- a/mlir/lib/Pass/PassStatistics.cpp
+++ b/mlir/lib/Pass/PassStatistics.cpp
@@ -219,15 +219,13 @@ void OpPassManager::mergeStatisticsInto(OpPassManager &other) {
 /// Prepare the statistics of passes within the given pass manager for
 /// consumption(e.g. dumping).
 static void prepareStatistics(OpPassManager &pm) {
-  for (Pass &pass : pm.getPasses()) {
-    OpToOpPassAdaptor *adaptor = dyn_cast<OpToOpPassAdaptor>(&pass);
-    if (!adaptor)
-      continue;
-    MutableArrayRef<OpPassManager> nestedPms = adaptor->getPassManagers();
+  for (OpToOpPassAdaptor &adaptor :
+       llvm::make_isa_range<OpToOpPassAdaptor>(pm.getPasses())) {
+    MutableArrayRef<OpPassManager> nestedPms = adaptor.getPassManagers();
 
     // Merge the statistics from the async pass managers into the main nested
     // pass managers.  Prepare recursively before merging.
-    for (auto &asyncPM : adaptor->getParallelPassManagers()) {
+    for (auto &asyncPM : adaptor.getParallelPassManagers()) {
       for (unsigned i = 0, e = asyncPM.size(); i != e; ++i) {
         prepareStatistics(asyncPM[i]);
         asyncPM[i].mergeStatisticsInto(nestedPms[i]);
diff --git a/mlir/lib/Target/SMTLIB/ExportSMTLIB.cpp b/mlir/lib/Target/SMTLIB/ExportSMTLIB.cpp
index 2c2c9ee27c3f6..4e2a44888ab3d 100644
--- a/mlir/lib/Target/SMTLIB/ExportSMTLIB.cpp
+++ b/mlir/lib/Target/SMTLIB/ExportSMTLIB.cpp
@@ -636,11 +636,8 @@ static LogicalResult emit(SolverOp solver, const SMTEmissionOptions &options,
       return op->emitError()
              << "solver must not contain any non-SMT operations";
 
-    for (Type resTy : op->getResultTypes()) {
-      auto sortTy = dyn_cast<SortType>(resTy);
-      if (!sortTy)
-        continue;
-
+    for (SortType sortTy :
+         llvm::make_isa_range<SortType>(op->getResultTypes())) {
       unsigned arity = sortTy.getSortParams().size();
       if (declaredSorts.contains(sortTy.getIdentifier())) {
         if (declaredSorts[sortTy.getIdentifier()] != arity)
diff --git a/mlir/lib/Transforms/Utils/RegionUtils.cpp b/mlir/lib/Transforms/Utils/RegionUtils.cpp
index 349a03f897441..35dc5eb6c4ef4 100644
--- a/mlir/lib/Transforms/Utils/RegionUtils.cpp
+++ b/mlir/lib/Transforms/Utils/RegionUtils.cpp
@@ -1280,10 +1280,8 @@ static bool blockArgsDominateInsertionPoint(
 
   for (Operation *op : slice) {
     // Check direct operands.
-    for (Value operand : op->getOperands()) {
-      auto arg = dyn_cast<BlockArgument>(operand);
-      if (!arg)
-        continue;
+    for (BlockArgument arg :
+         llvm::make_isa_range<BlockArgument>(op->getOperands())) {
       if (!argDominates(arg, op))
         return false;
     }
@@ -1293,10 +1291,8 @@ static bool blockArgsDominateInsertionPoint(
     for (Region &region : op->getRegions()) {
       SetVector<Value> capturedValues;
       getUsedValuesDefinedAbove(region, region, capturedValues);
-      for (Value val : capturedValues) {
-        auto arg = dyn_cast<BlockArgument>(val);
-        if (!arg)
-          continue;
+      for (BlockArgument arg :
+           llvm::make_isa_range<BlockArgument>(capturedValues)) {
         if (!argDominates(arg, op))
           return false;
       }
diff --git a/mlir/tools/mlir-tblgen/OpDefinitionsGen.cpp b/mlir/tools/mlir-tblgen/OpDefinitionsGen.cpp
index 2b195ce7e31cf..3990791f87f24 100644
--- a/mlir/tools/mlir-tblgen/OpDefinitionsGen.cpp
+++ b/mlir/tools/mlir-tblgen/OpDefinitionsGen.cpp
@@ -3145,10 +3145,8 @@ void OpEmitter::buildParamList(SmallVectorImpl<MethodParameter> &paramList,
   // Check if parameters besides default valued one are enough to distinguish
   // between builders with wrapped and unwrapped arguments.
   bool hasBuilderAmbiguity = true;
-  for (const auto &arg : op.getArgs()) {
-    auto *namedAttr = dyn_cast<NamedAttribute *>(arg);
-    if (!namedAttr)
-      continue;
+  for (NamedAttribute *namedAttr :
+       llvm::make_isa_range<NamedAttribute *>(op.getArgs())) {
     Attribute attr = namedAttr->attr;
     if (attr.hasDefaultValue() || attr.isDerivedAttr())
       continue;

>From fefd8e5fee4ddfe32b3038911f0fb64ddf7a54eb Mon Sep 17 00:00:00 2001
From: Florian Hahn <flo at fhahn.com>
Date: Wed, 16 Sep 2026 14:31:07 +0100
Subject: [PATCH 2/2] !fixup use auto

---
 mlir/lib/Conversion/ConvertToEmitC/ConvertToEmitCPass.cpp   | 4 ++--
 mlir/lib/Conversion/ConvertToLLVM/ConvertToLLVMPass.cpp     | 4 ++--
 mlir/lib/Conversion/GPUCommon/GPUToLLVMConversion.cpp       | 2 +-
 mlir/lib/Conversion/VectorToGPU/VectorToGPU.cpp             | 2 +-
 mlir/lib/Conversion/XeVMToLLVM/XeVMToLLVM.cpp               | 2 +-
 mlir/lib/Dialect/Affine/Transforms/LoopFusion.cpp           | 3 +--
 mlir/lib/Dialect/Affine/Utils/Utils.cpp                     | 6 ++----
 mlir/lib/Dialect/LLVMIR/Transforms/InlinerInterfaceImpl.cpp | 2 +-
 mlir/lib/Dialect/Linalg/TransformOps/LinalgTransformOps.cpp | 2 +-
 mlir/lib/Dialect/XeGPU/Transforms/XeGPULayoutImpl.cpp       | 2 +-
 mlir/lib/Pass/PassStatistics.cpp                            | 2 +-
 mlir/lib/Target/SMTLIB/ExportSMTLIB.cpp                     | 3 +--
 mlir/lib/Transforms/Utils/RegionUtils.cpp                   | 6 ++----
 mlir/tools/mlir-tblgen/OpDefinitionsGen.cpp                 | 3 +--
 14 files changed, 18 insertions(+), 25 deletions(-)

diff --git a/mlir/lib/Conversion/ConvertToEmitC/ConvertToEmitCPass.cpp b/mlir/lib/Conversion/ConvertToEmitC/ConvertToEmitCPass.cpp
index 23072580acd96..afc66584d0879 100644
--- a/mlir/lib/Conversion/ConvertToEmitC/ConvertToEmitCPass.cpp
+++ b/mlir/lib/Conversion/ConvertToEmitC/ConvertToEmitCPass.cpp
@@ -80,7 +80,7 @@ class LoadDependentDialectExtension : public DialectExtensionBase {
   void apply(MLIRContext *context,
              MutableArrayRef<Dialect *> dialects) const final {
     LLVM_DEBUG(llvm::dbgs() << "Convert to EmitC extension load\n");
-    for (ConvertToEmitCPatternInterface *iface :
+    for (auto *iface :
          llvm::make_isa_range<ConvertToEmitCPatternInterface>(dialects)) {
       LLVM_DEBUG(llvm::dbgs() << "Convert to EmitC found dialect interface for "
                               << iface->getDialect()->getNamespace() << "\n");
@@ -211,7 +211,7 @@ LogicalResult ConvertToEmitCPassInterface::visitInterfaces(
     // Normal mode: Populate all patterns from all dialects that implement the
     // interface.
     std::vector<Dialect *> dialects = context->getLoadedDialects();
-    for (ConvertToEmitCPatternInterface *iface :
+    for (auto *iface :
          llvm::make_isa_range<ConvertToEmitCPatternInterface>(dialects))
       visitor(iface);
   }
diff --git a/mlir/lib/Conversion/ConvertToLLVM/ConvertToLLVMPass.cpp b/mlir/lib/Conversion/ConvertToLLVM/ConvertToLLVMPass.cpp
index 02d0f67a37703..92fbb9fa59176 100644
--- a/mlir/lib/Conversion/ConvertToLLVM/ConvertToLLVMPass.cpp
+++ b/mlir/lib/Conversion/ConvertToLLVM/ConvertToLLVMPass.cpp
@@ -81,7 +81,7 @@ class LoadDependentDialectExtension : public DialectExtensionBase {
   void apply(MLIRContext *context,
              MutableArrayRef<Dialect *> dialects) const final {
     LDBG() << "Convert to LLVM extension load";
-    for (ConvertToLLVMPatternInterface *iface :
+    for (auto *iface :
          llvm::make_isa_range<ConvertToLLVMPatternInterface>(dialects)) {
       LDBG() << "Convert to LLVM found dialect interface for "
              << iface->getDialect()->getNamespace();
@@ -274,7 +274,7 @@ LogicalResult ConvertToLLVMPassInterface::visitInterfaces(
     // First time we encounter this dialect: if it implements the interface,
     // let's populate patterns !
     std::vector<Dialect *> dialects = context->getLoadedDialects();
-    for (ConvertToLLVMPatternInterface *iface :
+    for (auto *iface :
          llvm::make_isa_range<ConvertToLLVMPatternInterface>(dialects))
       visitor(iface);
   }
diff --git a/mlir/lib/Conversion/GPUCommon/GPUToLLVMConversion.cpp b/mlir/lib/Conversion/GPUCommon/GPUToLLVMConversion.cpp
index 6d5b10c3002e0..da807d732beec 100644
--- a/mlir/lib/Conversion/GPUCommon/GPUToLLVMConversion.cpp
+++ b/mlir/lib/Conversion/GPUCommon/GPUToLLVMConversion.cpp
@@ -550,7 +550,7 @@ void GpuToLLVMConversionPass::runOnOperation() {
   // Populate all patterns from all dialects that implement the
   // `ConvertToLLVMPatternInterface` interface.
   std::vector<Dialect *> dialects = context->getLoadedDialects();
-  for (ConvertToLLVMPatternInterface *iface :
+  for (auto *iface :
        llvm::make_isa_range<ConvertToLLVMPatternInterface>(dialects))
     iface->populateConvertToLLVMConversionPatterns(target, converter, patterns);
 
diff --git a/mlir/lib/Conversion/VectorToGPU/VectorToGPU.cpp b/mlir/lib/Conversion/VectorToGPU/VectorToGPU.cpp
index 687a21541e4cb..4ed868eca25c7 100644
--- a/mlir/lib/Conversion/VectorToGPU/VectorToGPU.cpp
+++ b/mlir/lib/Conversion/VectorToGPU/VectorToGPU.cpp
@@ -554,7 +554,7 @@ static const char *inferFragType(Operation *op) {
       return inferFragType(userOp);
   }
 
-  for (vector::ContractionOp contract :
+  for (auto contract :
        llvm::make_isa_range<vector::ContractionOp>(op->getUsers())) {
     assert(op->getNumResults() == 1);
     if (contract.getLhs() == op->getResult(0))
diff --git a/mlir/lib/Conversion/XeVMToLLVM/XeVMToLLVM.cpp b/mlir/lib/Conversion/XeVMToLLVM/XeVMToLLVM.cpp
index e60a498b4388c..ab3d4750c06d2 100644
--- a/mlir/lib/Conversion/XeVMToLLVM/XeVMToLLVM.cpp
+++ b/mlir/lib/Conversion/XeVMToLLVM/XeVMToLLVM.cpp
@@ -351,7 +351,7 @@ buildCacheControlPayloads(ArrayRef<Attribute> attrs) {
   SmallVector<std::string> payloads;
   llvm::StringMap<bool> seen;
 
-  for (ArrayAttr arr : llvm::make_isa_range<ArrayAttr>(attrs)) {
+  for (auto arr : llvm::make_isa_range<ArrayAttr>(attrs)) {
     auto vals = arr.getValue();
     assert(vals.size() == 3 &&
            "Expected exactly 3 integer values (Token, CacheLevel, "
diff --git a/mlir/lib/Dialect/Affine/Transforms/LoopFusion.cpp b/mlir/lib/Dialect/Affine/Transforms/LoopFusion.cpp
index a7381e53d9335..77eda4062ec0c 100644
--- a/mlir/lib/Dialect/Affine/Transforms/LoopFusion.cpp
+++ b/mlir/lib/Dialect/Affine/Transforms/LoopFusion.cpp
@@ -1395,8 +1395,7 @@ struct GreedyFusion {
     // Search for siblings which load the same memref block argument.
     Block *block = dstNode->op->getBlock();
     for (unsigned i = 0, e = block->getNumArguments(); i != e; ++i) {
-      for (AffineReadOpInterface loadOp :
-           llvm::make_isa_range<AffineReadOpInterface>(
+      for (auto loadOp : llvm::make_isa_range<AffineReadOpInterface>(
                block->getArgument(i).getUsers())) {
         // Gather loops surrounding 'use'.
         SmallVector<AffineForOp, 4> loops;
diff --git a/mlir/lib/Dialect/Affine/Utils/Utils.cpp b/mlir/lib/Dialect/Affine/Utils/Utils.cpp
index cec5cb726dcc8..c65655a088a94 100644
--- a/mlir/lib/Dialect/Affine/Utils/Utils.cpp
+++ b/mlir/lib/Dialect/Affine/Utils/Utils.cpp
@@ -842,8 +842,7 @@ static void forwardStoreToLoad(
   // to replace the load, if any.
   Operation *lastWriteStoreOp = nullptr;
 
-  for (AffineWriteOpInterface storeOp :
-       llvm::make_isa_range<AffineWriteOpInterface>(
+  for (auto storeOp : llvm::make_isa_range<AffineWriteOpInterface>(
            loadOp.getMemRef().getUsers())) {
     MemRefAccess srcAccess(storeOp);
     MemRefAccess destAccess(loadOp);
@@ -916,8 +915,7 @@ static void findUnusedStore(AffineWriteOpInterface writeA,
                             llvm::function_ref<bool(Value, Value)> mayAlias) {
 
   // Only consider writing operations.
-  for (AffineWriteOpInterface writeB :
-       llvm::make_isa_range<AffineWriteOpInterface>(
+  for (auto writeB : llvm::make_isa_range<AffineWriteOpInterface>(
            writeA.getMemRef().getUsers())) {
     // The operations must be distinct.
     if (writeB == writeA)
diff --git a/mlir/lib/Dialect/LLVMIR/Transforms/InlinerInterfaceImpl.cpp b/mlir/lib/Dialect/LLVMIR/Transforms/InlinerInterfaceImpl.cpp
index 12a3ff75bc33b..b22b7fdec0dd1 100644
--- a/mlir/lib/Dialect/LLVMIR/Transforms/InlinerInterfaceImpl.cpp
+++ b/mlir/lib/Dialect/LLVMIR/Transforms/InlinerInterfaceImpl.cpp
@@ -280,7 +280,7 @@ static void createNewAliasScopesFromNoAliasParameter(
   SetVector<LLVM::SSACopyOp> ssaCopies;
   SetVector<LLVM::SSACopyOp> noAliasParams;
   for (Value argument : cast<LLVM::CallOp>(call).getArgOperands()) {
-    for (LLVM::SSACopyOp ssaCopy :
+    for (auto ssaCopy :
          llvm::make_isa_range<LLVM::SSACopyOp>(argument.getUsers())) {
       ssaCopies.insert(ssaCopy);
 
diff --git a/mlir/lib/Dialect/Linalg/TransformOps/LinalgTransformOps.cpp b/mlir/lib/Dialect/Linalg/TransformOps/LinalgTransformOps.cpp
index 71f6157b6ed3f..16b03ab5426a0 100644
--- a/mlir/lib/Dialect/Linalg/TransformOps/LinalgTransformOps.cpp
+++ b/mlir/lib/Dialect/Linalg/TransformOps/LinalgTransformOps.cpp
@@ -1925,7 +1925,7 @@ PackGreedilyOp::apply(transform::TransformRewriter &rewriter,
                       transform::TransformResults &transformResults,
                       transform::TransformState &state) {
   SmallVector<Operation *> results;
-  for (LinalgOp linalgOp :
+  for (auto linalgOp :
        llvm::make_isa_range<LinalgOp>(state.getPayloadOps(getTarget()))) {
     // linalgOp will be replaced and the insertion point may be invalidated if
     // we set it before -> set it after.
diff --git a/mlir/lib/Dialect/XeGPU/Transforms/XeGPULayoutImpl.cpp b/mlir/lib/Dialect/XeGPU/Transforms/XeGPULayoutImpl.cpp
index 9ec8c4c677091..8c0ad636458db 100644
--- a/mlir/lib/Dialect/XeGPU/Transforms/XeGPULayoutImpl.cpp
+++ b/mlir/lib/Dialect/XeGPU/Transforms/XeGPULayoutImpl.cpp
@@ -2889,7 +2889,7 @@ static xegpu::DistributeLayoutAttr getLoopCarriedLayoutForYieldOperand(
   if (it == mapping.end())
     return nullptr;
   xegpu::DistributeLayoutAttr iterArgLayout;
-  for (BlockArgument arg : llvm::make_isa_range<BlockArgument>(it->second)) {
+  for (auto arg : llvm::make_isa_range<BlockArgument>(it->second)) {
     xegpu::DistributeLayoutAttr layout = xegpu::getDistributeLayoutAttr(arg);
     assert((!iterArgLayout || !layout || iterArgLayout.isEqualTo(layout)) &&
            "region inputs fed by one terminator operand disagree on layout");
diff --git a/mlir/lib/Pass/PassStatistics.cpp b/mlir/lib/Pass/PassStatistics.cpp
index cedcc059fbd6b..1905986c0c4ee 100644
--- a/mlir/lib/Pass/PassStatistics.cpp
+++ b/mlir/lib/Pass/PassStatistics.cpp
@@ -219,7 +219,7 @@ void OpPassManager::mergeStatisticsInto(OpPassManager &other) {
 /// Prepare the statistics of passes within the given pass manager for
 /// consumption(e.g. dumping).
 static void prepareStatistics(OpPassManager &pm) {
-  for (OpToOpPassAdaptor &adaptor :
+  for (auto &adaptor :
        llvm::make_isa_range<OpToOpPassAdaptor>(pm.getPasses())) {
     MutableArrayRef<OpPassManager> nestedPms = adaptor.getPassManagers();
 
diff --git a/mlir/lib/Target/SMTLIB/ExportSMTLIB.cpp b/mlir/lib/Target/SMTLIB/ExportSMTLIB.cpp
index 4e2a44888ab3d..a9d526e769a8f 100644
--- a/mlir/lib/Target/SMTLIB/ExportSMTLIB.cpp
+++ b/mlir/lib/Target/SMTLIB/ExportSMTLIB.cpp
@@ -636,8 +636,7 @@ static LogicalResult emit(SolverOp solver, const SMTEmissionOptions &options,
       return op->emitError()
              << "solver must not contain any non-SMT operations";
 
-    for (SortType sortTy :
-         llvm::make_isa_range<SortType>(op->getResultTypes())) {
+    for (auto sortTy : llvm::make_isa_range<SortType>(op->getResultTypes())) {
       unsigned arity = sortTy.getSortParams().size();
       if (declaredSorts.contains(sortTy.getIdentifier())) {
         if (declaredSorts[sortTy.getIdentifier()] != arity)
diff --git a/mlir/lib/Transforms/Utils/RegionUtils.cpp b/mlir/lib/Transforms/Utils/RegionUtils.cpp
index 35dc5eb6c4ef4..cc90df0691800 100644
--- a/mlir/lib/Transforms/Utils/RegionUtils.cpp
+++ b/mlir/lib/Transforms/Utils/RegionUtils.cpp
@@ -1280,8 +1280,7 @@ static bool blockArgsDominateInsertionPoint(
 
   for (Operation *op : slice) {
     // Check direct operands.
-    for (BlockArgument arg :
-         llvm::make_isa_range<BlockArgument>(op->getOperands())) {
+    for (auto arg : llvm::make_isa_range<BlockArgument>(op->getOperands())) {
       if (!argDominates(arg, op))
         return false;
     }
@@ -1291,8 +1290,7 @@ static bool blockArgsDominateInsertionPoint(
     for (Region &region : op->getRegions()) {
       SetVector<Value> capturedValues;
       getUsedValuesDefinedAbove(region, region, capturedValues);
-      for (BlockArgument arg :
-           llvm::make_isa_range<BlockArgument>(capturedValues)) {
+      for (auto arg : llvm::make_isa_range<BlockArgument>(capturedValues)) {
         if (!argDominates(arg, op))
           return false;
       }
diff --git a/mlir/tools/mlir-tblgen/OpDefinitionsGen.cpp b/mlir/tools/mlir-tblgen/OpDefinitionsGen.cpp
index 3990791f87f24..aa9ff159903bc 100644
--- a/mlir/tools/mlir-tblgen/OpDefinitionsGen.cpp
+++ b/mlir/tools/mlir-tblgen/OpDefinitionsGen.cpp
@@ -3145,8 +3145,7 @@ void OpEmitter::buildParamList(SmallVectorImpl<MethodParameter> &paramList,
   // Check if parameters besides default valued one are enough to distinguish
   // between builders with wrapped and unwrapped arguments.
   bool hasBuilderAmbiguity = true;
-  for (NamedAttribute *namedAttr :
-       llvm::make_isa_range<NamedAttribute *>(op.getArgs())) {
+  for (auto *namedAttr : llvm::make_isa_range<NamedAttribute *>(op.getArgs())) {
     Attribute attr = namedAttr->attr;
     if (attr.hasDefaultValue() || attr.isDerivedAttr())
       continue;



More information about the Mlir-commits mailing list