[Mlir-commits] [mlir] [mlir] Migrate away from TypeRange(std::nullopt) (NFC) (PR #145246)
Kazu Hirata
llvmlistbot at llvm.org
Sun Jun 22 13:08:58 PDT 2025
https://github.com/kazutakahirata created https://github.com/llvm/llvm-project/pull/145246
ArrayRef has a constructor that accepts std::nullopt. This
constructor dates back to the days when we still had llvm::Optional.
Since the use of std::nullopt outside the context of std::optional is
kind of abuse and not intuitive to new comers, I would like to move
away from the constructor and eventually remove it.
One of the uses of std::nullopt is in a the constructors for
TypeRange. This patch takes care of the migration where we need
TypeRange() to facilitate perfect forwarding. Note that {} would be
ambiguous for perfecting forwarding to work.
>From 40a904f9877c706a7ab797f9905d209f757fe3a7 Mon Sep 17 00:00:00 2001
From: Kazu Hirata <kazu at google.com>
Date: Sun, 22 Jun 2025 07:13:13 -0700
Subject: [PATCH] [mlir] Migrate away from TypeRange(std::nullopt) (NFC)
ArrayRef has a constructor that accepts std::nullopt. This
constructor dates back to the days when we still had llvm::Optional.
Since the use of std::nullopt outside the context of std::optional is
kind of abuse and not intuitive to new comers, I would like to move
away from the constructor and eventually remove it.
One of the uses of std::nullopt is in a the constructors for
TypeRange. This patch takes care of the migration where we need
TypeRange() to facilitate perfect forwarding. Note that {} would be
ambiguous for perfecting forwarding to work.
---
mlir/lib/Conversion/SCFToGPU/SCFToGPU.cpp | 2 +-
mlir/lib/Conversion/SPIRVToLLVM/SPIRVToLLVM.cpp | 2 +-
mlir/test/lib/Dialect/Test/TestPatterns.cpp | 4 ++--
3 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/mlir/lib/Conversion/SCFToGPU/SCFToGPU.cpp b/mlir/lib/Conversion/SCFToGPU/SCFToGPU.cpp
index 1ac95ebcdc87f..84959d5ff8aba 100644
--- a/mlir/lib/Conversion/SCFToGPU/SCFToGPU.cpp
+++ b/mlir/lib/Conversion/SCFToGPU/SCFToGPU.cpp
@@ -245,7 +245,7 @@ void AffineLoopToGpuConverter::createLaunch(AffineForOp rootForOp,
Location terminatorLoc = terminator.getLoc();
terminator.erase();
builder.setInsertionPointToEnd(innermostForOp.getBody());
- builder.create<gpu::TerminatorOp>(terminatorLoc, std::nullopt);
+ builder.create<gpu::TerminatorOp>(terminatorLoc, TypeRange());
launchOp.getBody().front().getOperations().splice(
launchOp.getBody().front().begin(),
innermostForOp.getBody()->getOperations());
diff --git a/mlir/lib/Conversion/SPIRVToLLVM/SPIRVToLLVM.cpp b/mlir/lib/Conversion/SPIRVToLLVM/SPIRVToLLVM.cpp
index 93979e0f73324..2e4561e7cc3ea 100644
--- a/mlir/lib/Conversion/SPIRVToLLVM/SPIRVToLLVM.cpp
+++ b/mlir/lib/Conversion/SPIRVToLLVM/SPIRVToLLVM.cpp
@@ -839,7 +839,7 @@ class FunctionCallPattern
ConversionPatternRewriter &rewriter) const override {
if (callOp.getNumResults() == 0) {
auto newOp = rewriter.replaceOpWithNewOp<LLVM::CallOp>(
- callOp, std::nullopt, adaptor.getOperands(), callOp->getAttrs());
+ callOp, TypeRange(), adaptor.getOperands(), callOp->getAttrs());
newOp.getProperties().operandSegmentSizes = {
static_cast<int32_t>(adaptor.getOperands().size()), 0};
newOp.getProperties().op_bundle_sizes = rewriter.getDenseI32ArrayAttr({});
diff --git a/mlir/test/lib/Dialect/Test/TestPatterns.cpp b/mlir/test/lib/Dialect/Test/TestPatterns.cpp
index d073843484d81..a4cb705e6c8ea 100644
--- a/mlir/test/lib/Dialect/Test/TestPatterns.cpp
+++ b/mlir/test/lib/Dialect/Test/TestPatterns.cpp
@@ -1008,7 +1008,7 @@ struct TestPassthroughInvalidOp : public ConversionPattern {
op->getOperand(it.index()).getType(), range)
.getResult());
}
- rewriter.replaceOpWithNewOp<TestValidOp>(op, std::nullopt, flattened,
+ rewriter.replaceOpWithNewOp<TestValidOp>(op, TypeRange(), flattened,
std::nullopt);
return success();
}
@@ -1024,7 +1024,7 @@ struct TestDropAndReplaceInvalidOp : public ConversionPattern {
LogicalResult
matchAndRewrite(Operation *op, ArrayRef<Value> operands,
ConversionPatternRewriter &rewriter) const final {
- rewriter.replaceOpWithNewOp<TestValidOp>(op, std::nullopt, ValueRange(),
+ rewriter.replaceOpWithNewOp<TestValidOp>(op, TypeRange(), ValueRange(),
std::nullopt);
return success();
}
More information about the Mlir-commits
mailing list