diff --git a/mlir/lib/Dialect/GPU/IR/GPUDialect.cpp b/mlir/lib/Dialect/GPU/IR/GPUDialect.cpp --- a/mlir/lib/Dialect/GPU/IR/GPUDialect.cpp +++ b/mlir/lib/Dialect/GPU/IR/GPUDialect.cpp @@ -218,25 +218,25 @@ } KernelDim3 LaunchOp::getBlockIds() { - assert(!body().getBlocks().empty() && "FuncOp body must not be empty."); + assert(!body().empty() && "LaunchOp body must not be empty."); auto args = body().getBlocks().front().getArguments(); return KernelDim3{args[0], args[1], args[2]}; } KernelDim3 LaunchOp::getThreadIds() { - assert(!body().getBlocks().empty() && "FuncOp body must not be empty."); + assert(!body().empty() && "LaunchOp body must not be empty."); auto args = body().getBlocks().front().getArguments(); return KernelDim3{args[3], args[4], args[5]}; } KernelDim3 LaunchOp::getGridSize() { - assert(!body().getBlocks().empty() && "FuncOp body must not be empty."); + assert(!body().empty() && "LaunchOp body must not be empty."); auto args = body().getBlocks().front().getArguments(); return KernelDim3{args[6], args[7], args[8]}; } KernelDim3 LaunchOp::getBlockSize() { - assert(!body().getBlocks().empty() && "FuncOp body must not be empty."); + assert(!body().empty() && "LaunchOp body must not be empty."); auto args = body().getBlocks().front().getArguments(); return KernelDim3{args[9], args[10], args[11]}; } diff --git a/mlir/lib/Dialect/Linalg/EDSC/Builders.cpp b/mlir/lib/Dialect/Linalg/EDSC/Builders.cpp --- a/mlir/lib/Dialect/Linalg/EDSC/Builders.cpp +++ b/mlir/lib/Dialect/Linalg/EDSC/Builders.cpp @@ -140,7 +140,7 @@ SmallVector handles(blockTypes.size()); BlockBuilder(&b, op->getRegion(0), blockTypes, handles)([&] { regionBuilder(b.getBlock()->getArguments()); }); - assert(op->getRegion(0).getBlocks().size() == 1); + assert(llvm::hasSingleElement(op->getRegion(0))); return op; } diff --git a/mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp b/mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp --- a/mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp +++ b/mlir/lib/Dialect/Linalg/IR/LinalgOps.cpp @@ -202,7 +202,7 @@ << " inputs (tensor or buffer) and output buffer operands"; auto ®ion = op.region(); - if (region.getBlocks().size() != 1) + if (!llvm::hasSingleElement(region)) return op.emitOpError("expected region with 1 block"); if (failed(BlockArgsVerifier::verify(op, region.front()))) return failure(); diff --git a/mlir/lib/Dialect/Linalg/Transforms/Tiling.cpp b/mlir/lib/Dialect/Linalg/Transforms/Tiling.cpp --- a/mlir/lib/Dialect/Linalg/Transforms/Tiling.cpp +++ b/mlir/lib/Dialect/Linalg/Transforms/Tiling.cpp @@ -182,7 +182,7 @@ indexedGenericOp.emitOpError("expected a region"); return; } - auto &block = region.getBlocks().front(); + auto &block = region.front(); OpBuilder::InsertionGuard g(b); b.setInsertionPointToStart(&block); diff --git a/mlir/lib/Transforms/LoopFusion.cpp b/mlir/lib/Transforms/LoopFusion.cpp --- a/mlir/lib/Transforms/LoopFusion.cpp +++ b/mlir/lib/Transforms/LoopFusion.cpp @@ -636,7 +636,7 @@ DenseMap> memrefAccesses; // TODO: support multi-block functions. - if (f.getBlocks().size() != 1) + if (!llvm::hasSingleElement(f)) return false; DenseMap forToNodeMap; diff --git a/mlir/lib/Transforms/MemRefDataFlowOpt.cpp b/mlir/lib/Transforms/MemRefDataFlowOpt.cpp --- a/mlir/lib/Transforms/MemRefDataFlowOpt.cpp +++ b/mlir/lib/Transforms/MemRefDataFlowOpt.cpp @@ -178,7 +178,7 @@ void MemRefDataFlowOpt::runOnFunction() { // Only supports single block functions at the moment. FuncOp f = getFunction(); - if (f.getBlocks().size() != 1) { + if (!llvm::hasSingleElement(f)) { markAllAnalysesPreserved(); return; } diff --git a/mlir/lib/Transforms/ViewOpGraph.cpp b/mlir/lib/Transforms/ViewOpGraph.cpp --- a/mlir/lib/Transforms/ViewOpGraph.cpp +++ b/mlir/lib/Transforms/ViewOpGraph.cpp @@ -130,7 +130,7 @@ for (Region ®ion : op.getRegions()) { for (auto indexed_block : llvm::enumerate(region)) { // Suffix block number if there are more than 1 block. - auto blockName = region.getBlocks().size() == 1 + auto blockName = llvm::hasSingleElement(region) ? "" : ("__" + llvm::utostr(indexed_block.index())); llvm::WriteGraph(os, &indexed_block.value(), short_names, diff --git a/mlir/test/lib/Dialect/Affine/TestVectorizationUtils.cpp b/mlir/test/lib/Dialect/Affine/TestVectorizationUtils.cpp --- a/mlir/test/lib/Dialect/Affine/TestVectorizationUtils.cpp +++ b/mlir/test/lib/Dialect/Affine/TestVectorizationUtils.cpp @@ -248,7 +248,7 @@ // Only support single block functions at this point. FuncOp f = getFunction(); - if (f.getBlocks().size() != 1) + if (!llvm::hasSingleElement(f)) return; std::string str;