[flang-commits] [flang] [flang] Fix new clang-tidy warning llvm-type-switch-case-types. NFC. (PR #178512)
Jakub Kuderski via flang-commits
flang-commits at lists.llvm.org
Wed Jan 28 12:55:15 PST 2026
https://github.com/kuhar created https://github.com/llvm/llvm-project/pull/178512
Pre-commiting this before landing the new check in https://github.com/llvm/llvm-project/pull/177892
>From 35e498db24056d4426c1419468fba9c6a5e601be Mon Sep 17 00:00:00 2001
From: Jakub Kuderski <jakub at nod-labs.com>
Date: Wed, 28 Jan 2026 15:54:19 -0500
Subject: [PATCH] [flang] Fix new clang-tidy warning
llvm-type-switch-case-types. NFC.
---
.../lib/Optimizer/Analysis/AliasAnalysis.cpp | 12 ++--
flang/lib/Optimizer/Builder/HLFIRTools.cpp | 11 ++--
flang/lib/Optimizer/CodeGen/Target.cpp | 57 +++++++++----------
flang/lib/Optimizer/CodeGen/TargetRewrite.cpp | 40 ++++++-------
flang/lib/Optimizer/Dialect/FIROps.cpp | 23 ++++----
flang/lib/Optimizer/Dialect/FIRType.cpp | 15 +++--
flang/lib/Optimizer/HLFIR/IR/HLFIRDialect.cpp | 4 +-
.../Support/FIROpenACCTypeInterfaces.cpp | 8 +--
.../OpenACC/Support/FIROpenACCUtils.cpp | 29 +++++-----
.../lib/Optimizer/OpenMP/LowerNontemporal.cpp | 2 +-
10 files changed, 99 insertions(+), 102 deletions(-)
diff --git a/flang/lib/Optimizer/Analysis/AliasAnalysis.cpp b/flang/lib/Optimizer/Analysis/AliasAnalysis.cpp
index 4234a72192f31..2901ee00e1fbc 100644
--- a/flang/lib/Optimizer/Analysis/AliasAnalysis.cpp
+++ b/flang/lib/Optimizer/Analysis/AliasAnalysis.cpp
@@ -627,14 +627,14 @@ AliasAnalysis::Source AliasAnalysis::getSource(mlir::Value v,
assert(opResult.getOwner() == defOp && "v must be a result of defOp");
ty = opResult.getType();
llvm::TypeSwitch<Operation *>(defOp)
- .Case<hlfir::AsExprOp>([&](auto op) {
+ .Case([&](hlfir::AsExprOp op) {
// TODO: we should probably always report hlfir.as_expr
// as a unique source, and let the codegen decide whether
// to use the original buffer or create a copy.
v = op.getVar();
defOp = v.getDefiningOp();
})
- .Case<hlfir::AssociateOp>([&](auto op) {
+ .Case([&](hlfir::AssociateOp op) {
assert(opResult != op.getMustFreeStrorageFlag() &&
"MustFreeStorageFlag result is not an aliasing candidate");
@@ -651,7 +651,7 @@ AliasAnalysis::Source AliasAnalysis::getSource(mlir::Value v,
defOp = v.getDefiningOp();
}
})
- .Case<fir::PackArrayOp>([&](auto op) {
+ .Case([&](fir::PackArrayOp op) {
// The packed array is not distinguishable from the original
// array, so skip PackArrayOp and track further through
// the array operand.
@@ -659,7 +659,7 @@ AliasAnalysis::Source AliasAnalysis::getSource(mlir::Value v,
defOp = v.getDefiningOp();
approximateSource = true;
})
- .Case<fir::LoadOp>([&](auto op) {
+ .Case([&](fir::LoadOp op) {
// If load is inside target and it points to mapped item,
// continue tracking.
Operation *loadMemrefOp = op.getMemref().getDefiningOp();
@@ -758,7 +758,7 @@ AliasAnalysis::Source AliasAnalysis::getSource(mlir::Value v,
dyn_cast<omp::BlockArgOpenMPOpInterface>(op->getParentOp())) {
Value ompValArg;
llvm::TypeSwitch<Operation *>(op->getParentOp())
- .template Case<omp::TargetOp>([&](auto targetOp) {
+ .Case([&](omp::TargetOp targetOp) {
// If declare operation is inside omp target region,
// continue alias analysis outside the target region
for (auto [opArg, blockArg] : llvm::zip_equal(
@@ -838,7 +838,7 @@ AliasAnalysis::Source AliasAnalysis::getSource(mlir::Value v,
v = op.getMemref();
defOp = v.getDefiningOp();
})
- .Case<fir::FortranObjectViewOpInterface>([&](auto op) {
+ .Case([&](fir::FortranObjectViewOpInterface op) {
// This case must be located after the cases for concrete
// operations that support FortraObjectViewOpInterface,
// so that their special handling kicks in.
diff --git a/flang/lib/Optimizer/Builder/HLFIRTools.cpp b/flang/lib/Optimizer/Builder/HLFIRTools.cpp
index d428c76ac9523..65fffc96395f7 100644
--- a/flang/lib/Optimizer/Builder/HLFIRTools.cpp
+++ b/flang/lib/Optimizer/Builder/HLFIRTools.cpp
@@ -1783,9 +1783,10 @@ bool hlfir::isSimplyContiguous(mlir::Value base, bool checkWhole) {
return false;
return mlir::TypeSwitch<mlir::Operation *, bool>(def)
- .Case<fir::EmboxOp>(
- [&](auto op) { return fir::isContiguousEmbox(op, checkWhole); })
- .Case<fir::ReboxOp>([&](auto op) {
+ .Case([&](fir::EmboxOp op) {
+ return fir::isContiguousEmbox(op, checkWhole);
+ })
+ .Case([&](fir::ReboxOp op) {
hlfir::Entity box{op.getBox()};
return fir::reboxPreservesContinuity(
op, box.mayHaveNonDefaultLowerBounds(), checkWhole) &&
@@ -1794,7 +1795,7 @@ bool hlfir::isSimplyContiguous(mlir::Value base, bool checkWhole) {
.Case<fir::DeclareOp, hlfir::DeclareOp>([&](auto op) {
return isSimplyContiguous(op.getMemref(), checkWhole);
})
- .Case<fir::ConvertOp>(
- [&](auto op) { return isSimplyContiguous(op.getValue()); })
+ .Case(
+ [&](fir::ConvertOp op) { return isSimplyContiguous(op.getValue()); })
.Default([](auto &&) { return false; });
}
diff --git a/flang/lib/Optimizer/CodeGen/Target.cpp b/flang/lib/Optimizer/CodeGen/Target.cpp
index b60a72e4340b9..9b6c9be79120c 100644
--- a/flang/lib/Optimizer/CodeGen/Target.cpp
+++ b/flang/lib/Optimizer/CodeGen/Target.cpp
@@ -353,7 +353,7 @@ struct TargetX86_64 : public GenericTarget<TargetX86_64> {
ArgClass ¤t = byteOffset < 8 ? Lo : Hi;
// System V AMD64 ABI 3.2.3. version 1.0
llvm::TypeSwitch<mlir::Type>(type)
- .template Case<mlir::IntegerType>([&](mlir::IntegerType intTy) {
+ .Case([&](mlir::IntegerType intTy) {
if (intTy.getWidth() == 128)
Hi = Lo = ArgClass::Integer;
else
@@ -371,7 +371,7 @@ struct TargetX86_64 : public GenericTarget<TargetX86_64> {
current = ArgClass::SSE;
}
})
- .template Case<mlir::ComplexType>([&](mlir::ComplexType cmplx) {
+ .Case([&](mlir::ComplexType cmplx) {
const auto *sem = &floatToSemantics(kindMap, cmplx.getElementType());
if (sem == &llvm::APFloat::x87DoubleExtended()) {
current = ArgClass::ComplexX87;
@@ -382,23 +382,23 @@ struct TargetX86_64 : public GenericTarget<TargetX86_64> {
byteOffset, Lo, Hi);
}
})
- .template Case<fir::LogicalType>([&](fir::LogicalType logical) {
+ .Case([&](fir::LogicalType logical) {
if (kindMap.getLogicalBitsize(logical.getFKind()) == 128)
Hi = Lo = ArgClass::Integer;
else
current = ArgClass::Integer;
})
- .template Case<fir::CharacterType>(
+ .Case(
[&](fir::CharacterType character) { current = ArgClass::Integer; })
- .template Case<fir::SequenceType>([&](fir::SequenceType seqTy) {
+ .Case([&](fir::SequenceType seqTy) {
// Array component.
classifyArray(loc, seqTy, byteOffset, Lo, Hi);
})
- .template Case<fir::RecordType>([&](fir::RecordType recTy) {
+ .Case([&](fir::RecordType recTy) {
// Component that is a derived type.
classifyStruct(loc, recTy, byteOffset, Lo, Hi);
})
- .template Case<fir::VectorType>([&](fir::VectorType vecTy) {
+ .Case([&](fir::VectorType vecTy) {
// Previously marshalled SSE eight byte for a previous struct
// argument.
auto *sem = fir::isa_real(vecTy.getEleTy())
@@ -939,23 +939,23 @@ struct TargetAArch64 : public GenericTarget<TargetAArch64> {
NRegs usedRegsForType(mlir::Location loc, mlir::Type type) const {
return llvm::TypeSwitch<mlir::Type, NRegs>(type)
- .Case<mlir::IntegerType>([&](auto intTy) {
+ .Case([&](mlir::IntegerType intTy) {
return intTy.getWidth() == 128 ? NRegs{2, false} : NRegs{1, false};
})
- .Case<mlir::FloatType>([&](auto) { return NRegs{1, true}; })
- .Case<mlir::ComplexType>([&](auto) { return NRegs{2, true}; })
- .Case<fir::LogicalType>([&](auto) { return NRegs{1, false}; })
- .Case<fir::CharacterType>([&](auto) { return NRegs{1, false}; })
- .Case<fir::SequenceType>([&](auto ty) {
+ .Case([&](mlir::FloatType) { return NRegs{1, true}; })
+ .Case([&](mlir::ComplexType) { return NRegs{2, true}; })
+ .Case([&](fir::LogicalType) { return NRegs{1, false}; })
+ .Case([&](fir::CharacterType) { return NRegs{1, false}; })
+ .Case([&](fir::SequenceType ty) {
assert(ty.getShape().size() == 1 &&
"invalid array dimensions in BIND(C)");
NRegs nregs = usedRegsForType(loc, ty.getEleTy());
nregs.n *= ty.getShape()[0];
return nregs;
})
- .Case<fir::RecordType>(
- [&](auto ty) { return usedRegsForRecordType(loc, ty); })
- .Case<fir::VectorType>([&](auto) {
+ .Case(
+ [&](fir::RecordType ty) { return usedRegsForRecordType(loc, ty); })
+ .Case([&](fir::VectorType) {
TODO(loc, "passing vector argument to C by value is not supported");
return NRegs{};
})
@@ -1167,13 +1167,12 @@ struct TargetPPC64le : public GenericTarget<TargetPPC64le> {
unsigned getElemWidth(mlir::Type ty) const {
unsigned width{};
llvm::TypeSwitch<mlir::Type>(ty)
- .template Case<mlir::ComplexType>([&](mlir::ComplexType cmplx) {
+ .Case([&](mlir::ComplexType cmplx) {
auto elemType{
mlir::dyn_cast<mlir::FloatType>(cmplx.getElementType())};
width = elemType.getWidth();
})
- .template Case<mlir::FloatType>(
- [&](mlir::FloatType real) { width = real.getWidth(); });
+ .Case([&](mlir::FloatType real) { width = real.getWidth(); });
return width;
}
@@ -1594,15 +1593,15 @@ struct TargetLoongArch64 : public GenericTarget<TargetLoongArch64> {
llvm::SmallVector<mlir::Type> flatTypes;
llvm::TypeSwitch<mlir::Type>(type)
- .template Case<mlir::IntegerType>([&](mlir::IntegerType intTy) {
+ .Case([&](mlir::IntegerType intTy) {
if (intTy.getWidth() != 0)
flatTypes.push_back(intTy);
})
- .template Case<mlir::FloatType>([&](mlir::FloatType floatTy) {
+ .Case([&](mlir::FloatType floatTy) {
if (floatTy.getWidth() != 0)
flatTypes.push_back(floatTy);
})
- .template Case<mlir::ComplexType>([&](mlir::ComplexType cmplx) {
+ .Case([&](mlir::ComplexType cmplx) {
const auto *sem = &floatToSemantics(kindMap, cmplx.getElementType());
if (sem == &llvm::APFloat::IEEEsingle() ||
sem == &llvm::APFloat::IEEEdouble() ||
@@ -1614,21 +1613,21 @@ struct TargetLoongArch64 : public GenericTarget<TargetLoongArch64> {
"IEEEquad) as a structure component for BIND(C), "
"VALUE derived type argument and type return");
})
- .template Case<fir::LogicalType>([&](fir::LogicalType logicalTy) {
+ .Case([&](fir::LogicalType logicalTy) {
const unsigned width =
kindMap.getLogicalBitsize(logicalTy.getFKind());
if (width != 0)
flatTypes.push_back(
mlir::IntegerType::get(type.getContext(), width));
})
- .template Case<fir::CharacterType>([&](fir::CharacterType charTy) {
+ .Case([&](fir::CharacterType charTy) {
assert(kindMap.getCharacterBitsize(charTy.getFKind()) <= 8 &&
"the bit size of characterType as an interoperable type must "
"not exceed 8");
for (unsigned i = 0; i < charTy.getLen(); ++i)
flatTypes.push_back(mlir::IntegerType::get(type.getContext(), 8));
})
- .template Case<fir::SequenceType>([&](fir::SequenceType seqTy) {
+ .Case([&](fir::SequenceType seqTy) {
if (!seqTy.hasDynamicExtents()) {
const std::uint64_t numOfEle = seqTy.getConstantArraySize();
mlir::Type eleTy = seqTy.getEleTy();
@@ -1646,7 +1645,7 @@ struct TargetLoongArch64 : public GenericTarget<TargetLoongArch64> {
"component for BIND(C), "
"VALUE derived type argument and type return");
})
- .template Case<fir::RecordType>([&](fir::RecordType recTy) {
+ .Case([&](fir::RecordType recTy) {
for (auto &component : recTy.getTypeList()) {
mlir::Type eleTy = component.second;
llvm::SmallVector<mlir::Type> subTypeList =
@@ -1655,7 +1654,7 @@ struct TargetLoongArch64 : public GenericTarget<TargetLoongArch64> {
llvm::copy(subTypeList, std::back_inserter(flatTypes));
}
})
- .template Case<fir::VectorType>([&](fir::VectorType vecTy) {
+ .Case([&](fir::VectorType vecTy) {
auto sizeAndAlign = fir::getTypeSizeAndAlignmentOrCrash(
loc, vecTy, getDataLayout(), kindMap);
if (sizeAndAlign.first == 2 * GRLenInChar)
@@ -1742,7 +1741,7 @@ struct TargetLoongArch64 : public GenericTarget<TargetLoongArch64> {
return true;
llvm::TypeSwitch<mlir::Type>(type)
- .template Case<mlir::IntegerType>([&](mlir::IntegerType intTy) {
+ .Case([&](mlir::IntegerType intTy) {
const unsigned width = intTy.getWidth();
if (width > 128)
TODO(loc,
@@ -1754,7 +1753,7 @@ struct TargetLoongArch64 : public GenericTarget<TargetLoongArch64> {
else if (width <= 2 * GRLen)
GARsLeft = GARsLeft - 2;
})
- .template Case<mlir::FloatType>([&](mlir::FloatType floatTy) {
+ .Case([&](mlir::FloatType floatTy) {
const unsigned width = floatTy.getWidth();
if (width > 128)
TODO(loc, "floatType with width exceeding 128 bits is unsupported");
diff --git a/flang/lib/Optimizer/CodeGen/TargetRewrite.cpp b/flang/lib/Optimizer/CodeGen/TargetRewrite.cpp
index 8ca2869993443..3ef4703fb41d6 100644
--- a/flang/lib/Optimizer/CodeGen/TargetRewrite.cpp
+++ b/flang/lib/Optimizer/CodeGen/TargetRewrite.cpp
@@ -393,12 +393,12 @@ class TargetRewrite : public fir::impl::TargetRewritePassBase<TargetRewrite> {
if (fnTy.getResults().size() == 1) {
mlir::Type ty = fnTy.getResult(0);
llvm::TypeSwitch<mlir::Type>(ty)
- .template Case<mlir::ComplexType>([&](mlir::ComplexType cmplx) {
+ .Case([&](mlir::ComplexType cmplx) {
wrap = rewriteCallComplexResultType(loc, cmplx, newResTys,
newInTyAndAttrs, newOpers,
savedStackPtr);
})
- .template Case<fir::RecordType>([&](fir::RecordType recTy) {
+ .Case([&](fir::RecordType recTy) {
wrap = rewriteCallStructResultType(loc, recTy, newResTys,
newInTyAndAttrs, newOpers,
savedStackPtr);
@@ -422,7 +422,7 @@ class TargetRewrite : public fir::impl::TargetRewritePassBase<TargetRewrite> {
mlir::Value oper = std::get<1>(e.value());
unsigned index = e.index();
llvm::TypeSwitch<mlir::Type>(ty)
- .template Case<fir::BoxCharType>([&](fir::BoxCharType boxTy) {
+ .Case([&](fir::BoxCharType boxTy) {
if constexpr (std::is_same_v<std::decay_t<A>, fir::CallOp>) {
if (noCharacterConversion) {
newInTyAndAttrs.push_back(
@@ -456,15 +456,15 @@ class TargetRewrite : public fir::impl::TargetRewritePassBase<TargetRewrite> {
}
}
})
- .template Case<mlir::ComplexType>([&](mlir::ComplexType cmplx) {
+ .Case([&](mlir::ComplexType cmplx) {
rewriteCallComplexInputType(loc, cmplx, oper, newInTyAndAttrs,
newOpers, savedStackPtr);
})
- .template Case<fir::RecordType>([&](fir::RecordType recTy) {
+ .Case([&](fir::RecordType recTy) {
rewriteCallStructInputType(loc, recTy, oper, newInTyAndAttrs,
newOpers, savedStackPtr);
})
- .template Case<mlir::TupleType>([&](mlir::TupleType tuple) {
+ .Case([&](mlir::TupleType tuple) {
if (fir::isCharacterProcedureTuple(tuple)) {
mlir::ModuleOp module = getModule();
if constexpr (std::is_same_v<std::decay_t<A>, fir::CallOp>) {
@@ -707,10 +707,10 @@ class TargetRewrite : public fir::impl::TargetRewritePassBase<TargetRewrite> {
auto loc = addrOp.getLoc();
for (mlir::Type ty : addrTy.getResults()) {
llvm::TypeSwitch<mlir::Type>(ty)
- .Case<mlir::ComplexType>([&](mlir::ComplexType ty) {
+ .Case([&](mlir::ComplexType ty) {
lowerComplexSignatureRes(loc, ty, newResTys, newInTyAndAttrs);
})
- .Case<fir::RecordType>([&](fir::RecordType ty) {
+ .Case([&](fir::RecordType ty) {
lowerStructSignatureRes(loc, ty, newResTys, newInTyAndAttrs);
})
.Default([&](mlir::Type ty) { newResTys.push_back(ty); });
@@ -718,7 +718,7 @@ class TargetRewrite : public fir::impl::TargetRewritePassBase<TargetRewrite> {
llvm::SmallVector<mlir::Type> trailingInTys;
for (mlir::Type ty : addrTy.getInputs()) {
llvm::TypeSwitch<mlir::Type>(ty)
- .Case<fir::BoxCharType>([&](auto box) {
+ .Case([&](fir::BoxCharType box) {
if (noCharacterConversion) {
newInTyAndAttrs.push_back(
fir::CodeGenSpecifics::getTypeAndAttr(box));
@@ -733,10 +733,10 @@ class TargetRewrite : public fir::impl::TargetRewritePassBase<TargetRewrite> {
}
}
})
- .Case<mlir::ComplexType>([&](mlir::ComplexType ty) {
+ .Case([&](mlir::ComplexType ty) {
lowerComplexSignatureArg(loc, ty, newInTyAndAttrs);
})
- .Case<mlir::TupleType>([&](mlir::TupleType tuple) {
+ .Case([&](mlir::TupleType tuple) {
if (fir::isCharacterProcedureTuple(tuple)) {
newInTyAndAttrs.push_back(
fir::CodeGenSpecifics::getTypeAndAttr(tuple.getType(0)));
@@ -746,7 +746,7 @@ class TargetRewrite : public fir::impl::TargetRewritePassBase<TargetRewrite> {
fir::CodeGenSpecifics::getTypeAndAttr(ty));
}
})
- .template Case<fir::RecordType>([&](fir::RecordType recTy) {
+ .Case([&](fir::RecordType recTy) {
lowerStructSignatureArg(loc, recTy, newInTyAndAttrs);
})
.Default([&](mlir::Type ty) {
@@ -888,13 +888,13 @@ class TargetRewrite : public fir::impl::TargetRewritePassBase<TargetRewrite> {
// Convert return value(s)
for (auto ty : funcTy.getResults())
llvm::TypeSwitch<mlir::Type>(ty)
- .template Case<mlir::ComplexType>([&](mlir::ComplexType cmplx) {
+ .Case([&](mlir::ComplexType cmplx) {
if (noComplexConversion)
newResTys.push_back(cmplx);
else
doComplexReturn(func, cmplx, newResTys, newInTyAndAttrs, fixups);
})
- .template Case<mlir::IntegerType>([&](mlir::IntegerType intTy) {
+ .Case([&](mlir::IntegerType intTy) {
auto m = specifics->integerArgumentType(func.getLoc(), intTy);
assert(m.size() == 1);
auto attr = std::get<fir::CodeGenSpecifics::Attributes>(m[0]);
@@ -908,7 +908,7 @@ class TargetRewrite : public fir::impl::TargetRewritePassBase<TargetRewrite> {
rewriter->getUnitAttr()));
newResTys.push_back(retTy);
})
- .template Case<fir::RecordType>([&](fir::RecordType recTy) {
+ .Case([&](fir::RecordType recTy) {
doStructReturn(func, recTy, newResTys, newInTyAndAttrs, fixups);
})
.Default([&](mlir::Type ty) { newResTys.push_back(ty); });
@@ -923,7 +923,7 @@ class TargetRewrite : public fir::impl::TargetRewritePassBase<TargetRewrite> {
auto ty = e.value();
unsigned index = e.index();
llvm::TypeSwitch<mlir::Type>(ty)
- .template Case<fir::BoxCharType>([&](fir::BoxCharType boxTy) {
+ .Case([&](fir::BoxCharType boxTy) {
if (noCharacterConversion) {
newInTyAndAttrs.push_back(
fir::CodeGenSpecifics::getTypeAndAttr(boxTy));
@@ -946,10 +946,10 @@ class TargetRewrite : public fir::impl::TargetRewritePassBase<TargetRewrite> {
}
}
})
- .template Case<mlir::ComplexType>([&](mlir::ComplexType cmplx) {
+ .Case([&](mlir::ComplexType cmplx) {
doComplexArg(func, cmplx, newInTyAndAttrs, fixups);
})
- .template Case<mlir::TupleType>([&](mlir::TupleType tuple) {
+ .Case([&](mlir::TupleType tuple) {
if (fir::isCharacterProcedureTuple(tuple)) {
fixups.emplace_back(FixupTy::Codes::TrailingCharProc,
newInTyAndAttrs.size(), trailingTys.size());
@@ -961,7 +961,7 @@ class TargetRewrite : public fir::impl::TargetRewritePassBase<TargetRewrite> {
fir::CodeGenSpecifics::getTypeAndAttr(ty));
}
})
- .template Case<mlir::IntegerType>([&](mlir::IntegerType intTy) {
+ .Case([&](mlir::IntegerType intTy) {
auto m = specifics->integerArgumentType(func.getLoc(), intTy);
assert(m.size() == 1);
auto attr = std::get<fir::CodeGenSpecifics::Attributes>(m[0]);
@@ -978,7 +978,7 @@ class TargetRewrite : public fir::impl::TargetRewritePassBase<TargetRewrite> {
newInTyAndAttrs.push_back(m[0]);
})
- .template Case<fir::RecordType>([&](fir::RecordType recTy) {
+ .Case([&](fir::RecordType recTy) {
doStructArg(func, recTy, newInTyAndAttrs, fixups);
})
.Default([&](mlir::Type ty) {
diff --git a/flang/lib/Optimizer/Dialect/FIROps.cpp b/flang/lib/Optimizer/Dialect/FIROps.cpp
index 38bb4aa102eeb..88782dad07419 100644
--- a/flang/lib/Optimizer/Dialect/FIROps.cpp
+++ b/flang/lib/Optimizer/Dialect/FIROps.cpp
@@ -1117,17 +1117,16 @@ void fir::BoxAddrOp::build(mlir::OpBuilder &builder,
mlir::OperationState &result, mlir::Value val) {
mlir::Type type =
llvm::TypeSwitch<mlir::Type, mlir::Type>(val.getType())
- .Case<fir::BaseBoxType>([&](fir::BaseBoxType ty) -> mlir::Type {
+ .Case([&](fir::BaseBoxType ty) -> mlir::Type {
mlir::Type eleTy = ty.getEleTy();
if (fir::isa_ref_type(eleTy))
return eleTy;
return fir::ReferenceType::get(eleTy);
})
- .Case<fir::BoxCharType>([&](fir::BoxCharType ty) -> mlir::Type {
+ .Case([&](fir::BoxCharType ty) -> mlir::Type {
return fir::ReferenceType::get(ty.getEleTy());
})
- .Case<fir::BoxProcType>(
- [&](fir::BoxProcType ty) { return ty.getEleTy(); })
+ .Case([&](fir::BoxProcType ty) { return ty.getEleTy(); })
.Default([&](const auto &) { return mlir::Type{}; });
assert(type && "bad val type");
build(builder, result, type, val);
@@ -1727,11 +1726,11 @@ void fir::CoordinateOp::build(mlir::OpBuilder &builder,
bool anyField = false;
for (fir::IntOrValue index : coor) {
llvm::TypeSwitch<fir::IntOrValue>(index)
- .Case<mlir::IntegerAttr>([&](mlir::IntegerAttr intAttr) {
+ .Case([&](mlir::IntegerAttr intAttr) {
fieldIndices.push_back(intAttr.getInt());
anyField = true;
})
- .Case<mlir::Value>([&](mlir::Value value) {
+ .Case([&](mlir::Value value) {
dynamicIndices.push_back(value);
fieldIndices.push_back(fir::CoordinateOp::kDynamicIndex);
});
@@ -1754,7 +1753,7 @@ void fir::CoordinateOp::print(mlir::OpAsmPrinter &p) {
for (auto index : getIndices()) {
p << ", ";
llvm::TypeSwitch<fir::IntOrValue>(index)
- .Case<mlir::IntegerAttr>([&](mlir::IntegerAttr intAttr) {
+ .Case([&](mlir::IntegerAttr intAttr) {
if (auto recordType = llvm::dyn_cast<fir::RecordType>(eleTy)) {
int fieldId = intAttr.getInt();
if (fieldId < static_cast<int>(recordType.getNumFields())) {
@@ -1769,7 +1768,7 @@ void fir::CoordinateOp::print(mlir::OpAsmPrinter &p) {
// investigated.
p << intAttr;
})
- .Case<mlir::Value>([&](mlir::Value value) { p << value; });
+ .Case([&](mlir::Value value) { p << value; });
}
}
p.printOptionalAttrDict(
@@ -5178,7 +5177,7 @@ bool fir::isDummyArgument(mlir::Value v) {
mlir::Type fir::applyPathToType(mlir::Type eleTy, mlir::ValueRange path) {
for (auto i = path.begin(), end = path.end(); eleTy && i < end;) {
eleTy = llvm::TypeSwitch<mlir::Type, mlir::Type>(eleTy)
- .Case<fir::RecordType>([&](fir::RecordType ty) {
+ .Case([&](fir::RecordType ty) {
if (auto *op = (*i++).getDefiningOp()) {
if (auto off = mlir::dyn_cast<fir::FieldIndexOp>(op))
return ty.getType(off.getFieldName());
@@ -5187,7 +5186,7 @@ mlir::Type fir::applyPathToType(mlir::Type eleTy, mlir::ValueRange path) {
}
return mlir::Type{};
})
- .Case<fir::SequenceType>([&](fir::SequenceType ty) {
+ .Case([&](fir::SequenceType ty) {
bool valid = true;
const auto rank = ty.getDimension();
for (std::remove_const_t<decltype(rank)> ii = 0;
@@ -5195,13 +5194,13 @@ mlir::Type fir::applyPathToType(mlir::Type eleTy, mlir::ValueRange path) {
valid = i < end && fir::isa_integer((*i++).getType());
return valid ? ty.getEleTy() : mlir::Type{};
})
- .Case<mlir::TupleType>([&](mlir::TupleType ty) {
+ .Case([&](mlir::TupleType ty) {
if (auto *op = (*i++).getDefiningOp())
if (auto off = mlir::dyn_cast<mlir::arith::ConstantOp>(op))
return ty.getType(fir::toInt(off));
return mlir::Type{};
})
- .Case<mlir::ComplexType>([&](mlir::ComplexType ty) {
+ .Case([&](mlir::ComplexType ty) {
if (fir::isa_integer((*i++).getType()))
return ty.getElementType();
return mlir::Type{};
diff --git a/flang/lib/Optimizer/Dialect/FIRType.cpp b/flang/lib/Optimizer/Dialect/FIRType.cpp
index fe35b085405b1..d84846843db81 100644
--- a/flang/lib/Optimizer/Dialect/FIRType.cpp
+++ b/flang/lib/Optimizer/Dialect/FIRType.cpp
@@ -226,8 +226,7 @@ mlir::Type getDerivedType(mlir::Type ty) {
return seq.getEleTy();
return p.getEleTy();
})
- .Case<fir::BaseBoxType>(
- [](auto p) { return getDerivedType(p.getEleTy()); })
+ .Case([](fir::BaseBoxType p) { return getDerivedType(p.getEleTy()); })
.Default([](mlir::Type t) { return t; });
}
@@ -423,7 +422,7 @@ mlir::Type unwrapInnerType(mlir::Type ty) {
return seqTy.getEleTy();
return eleTy;
})
- .Case<fir::RecordType>([](auto t) { return t; })
+ .Case([](fir::RecordType t) { return t; })
.Default([](mlir::Type) { return mlir::Type{}; });
}
@@ -685,7 +684,7 @@ std::string getTypeAsString(mlir::Type ty, const fir::KindMapping &kindMap,
mlir::Type changeElementType(mlir::Type type, mlir::Type newElementType,
bool turnBoxIntoClass) {
return llvm::TypeSwitch<mlir::Type, mlir::Type>(type)
- .Case<fir::SequenceType>([&](fir::SequenceType seqTy) -> mlir::Type {
+ .Case([&](fir::SequenceType seqTy) -> mlir::Type {
return fir::SequenceType::get(seqTy.getShape(), newElementType);
})
.Case<fir::ReferenceType, fir::ClassType>([&](auto t) -> mlir::Type {
@@ -699,7 +698,7 @@ mlir::Type changeElementType(mlir::Type type, mlir::Type newElementType,
return FIRT::get(
changeElementType(t.getEleTy(), newElementType, turnBoxIntoClass));
})
- .Case<fir::BoxType>([&](fir::BoxType t) -> mlir::Type {
+ .Case([&](fir::BoxType t) -> mlir::Type {
mlir::Type newInnerType =
changeElementType(t.getEleTy(), newElementType, false);
if (turnBoxIntoClass)
@@ -1438,7 +1437,7 @@ static mlir::Type
changeTypeShape(mlir::Type type,
std::optional<fir::SequenceType::ShapeRef> newShape) {
return llvm::TypeSwitch<mlir::Type, mlir::Type>(type)
- .Case<fir::SequenceType>([&](fir::SequenceType seqTy) -> mlir::Type {
+ .Case([&](fir::SequenceType seqTy) -> mlir::Type {
if (newShape)
return fir::SequenceType::get(*newShape, seqTy.getEleTy());
return seqTy.getEleTy();
@@ -1498,10 +1497,10 @@ fir::BaseBoxType fir::BaseBoxType::getBoxTypeWithNewAttr(
break;
}
return llvm::TypeSwitch<fir::BaseBoxType, fir::BaseBoxType>(*this)
- .Case<fir::BoxType>([baseType](auto b) {
+ .Case([baseType](fir::BoxType b) {
return fir::BoxType::get(baseType, b.isVolatile());
})
- .Case<fir::ClassType>([baseType](auto b) {
+ .Case([baseType](fir::ClassType b) {
return fir::ClassType::get(baseType, b.isVolatile());
});
}
diff --git a/flang/lib/Optimizer/HLFIR/IR/HLFIRDialect.cpp b/flang/lib/Optimizer/HLFIR/IR/HLFIRDialect.cpp
index 1b1abef69d5ce..e0fee2f4ab3db 100644
--- a/flang/lib/Optimizer/HLFIR/IR/HLFIRDialect.cpp
+++ b/flang/lib/Optimizer/HLFIR/IR/HLFIRDialect.cpp
@@ -87,8 +87,8 @@ bool hlfir::isFortranVariableType(mlir::Type type) {
return mlir::isa<fir::BaseBoxType>(eleType) ||
!fir::hasDynamicSize(eleType);
})
- .Case<fir::BaseBoxType, fir::BoxCharType>([](auto) { return true; })
- .Case<fir::VectorType>([](auto) { return true; })
+ .Case<fir::BaseBoxType, fir::BoxCharType>([](mlir::Type) { return true; })
+ .Case([](fir::VectorType) { return true; })
.Default([](mlir::Type) { return false; });
}
diff --git a/flang/lib/Optimizer/OpenACC/Support/FIROpenACCTypeInterfaces.cpp b/flang/lib/Optimizer/OpenACC/Support/FIROpenACCTypeInterfaces.cpp
index 7619a21fc0477..922985152a905 100644
--- a/flang/lib/Optimizer/OpenACC/Support/FIROpenACCTypeInterfaces.cpp
+++ b/flang/lib/Optimizer/OpenACC/Support/FIROpenACCTypeInterfaces.cpp
@@ -377,7 +377,7 @@ getBaseRef(mlir::TypedValue<mlir::acc::PointerLikeType> varPtr) {
// calculation op.
mlir::Value baseRef =
llvm::TypeSwitch<mlir::Operation *, mlir::Value>(op)
- .Case<fir::DeclareOp>([&](auto op) {
+ .Case([&](fir::DeclareOp op) {
// If this declare binds a view with an underlying storage operand,
// treat that storage as the base reference. Otherwise, fall back
// to the declared memref.
@@ -385,7 +385,7 @@ getBaseRef(mlir::TypedValue<mlir::acc::PointerLikeType> varPtr) {
return storage;
return mlir::Value(varPtr);
})
- .Case<hlfir::DesignateOp>([&](auto op) {
+ .Case([&](hlfir::DesignateOp op) {
// Get the base object.
return op.getMemref();
})
@@ -393,12 +393,12 @@ getBaseRef(mlir::TypedValue<mlir::acc::PointerLikeType> varPtr) {
// Get the base array on which the coordinate is being applied.
return op.getMemref();
})
- .Case<fir::CoordinateOp>([&](auto op) {
+ .Case([&](fir::CoordinateOp op) {
// For coordinate operation which is applied on derived type
// object, get the base object.
return op.getRef();
})
- .Case<fir::ConvertOp>([&](auto op) -> mlir::Value {
+ .Case([&](fir::ConvertOp op) -> mlir::Value {
// Strip the conversion and recursively check the operand
if (auto ptrLikeOperand = mlir::dyn_cast_if_present<
mlir::TypedValue<mlir::acc::PointerLikeType>>(
diff --git a/flang/lib/Optimizer/OpenACC/Support/FIROpenACCUtils.cpp b/flang/lib/Optimizer/OpenACC/Support/FIROpenACCUtils.cpp
index 5199271da3a2a..d66a9702ec4d4 100644
--- a/flang/lib/Optimizer/OpenACC/Support/FIROpenACCUtils.cpp
+++ b/flang/lib/Optimizer/OpenACC/Support/FIROpenACCUtils.cpp
@@ -55,33 +55,32 @@ std::string fir::acc::getVariableName(Value v, bool preferDemangledName) {
while (v && (defOp = v.getDefiningOp()) && iterate) {
iterate =
llvm::TypeSwitch<mlir::Operation *, bool>(defOp)
- .Case<mlir::ViewLikeOpInterface>(
- [&v](mlir::ViewLikeOpInterface op) {
- v = op.getViewSource();
- return true;
- })
- .Case<fir::ReboxOp>([&v](fir::ReboxOp op) {
+ .Case([&v](mlir::ViewLikeOpInterface op) {
+ v = op.getViewSource();
+ return true;
+ })
+ .Case([&v](fir::ReboxOp op) {
v = op.getBox();
return true;
})
- .Case<fir::EmboxOp>([&v](fir::EmboxOp op) {
+ .Case([&v](fir::EmboxOp op) {
v = op.getMemref();
return true;
})
- .Case<fir::ConvertOp>([&v](fir::ConvertOp op) {
+ .Case([&v](fir::ConvertOp op) {
v = op.getValue();
return true;
})
- .Case<fir::LoadOp>([&v](fir::LoadOp op) {
+ .Case([&v](fir::LoadOp op) {
v = op.getMemref();
return true;
})
- .Case<fir::BoxAddrOp>([&v](fir::BoxAddrOp op) {
+ .Case([&v](fir::BoxAddrOp op) {
// The box holds the name of the variable.
v = op.getVal();
return true;
})
- .Case<fir::AddrOfOp>([&](fir::AddrOfOp op) {
+ .Case([&](fir::AddrOfOp op) {
// Only use address_of symbol if mangled name is preferred
if (!preferDemangledName) {
auto symRef = op.getSymbol();
@@ -89,7 +88,7 @@ std::string fir::acc::getVariableName(Value v, bool preferDemangledName) {
}
return false;
})
- .Case<fir::ArrayCoorOp>([&](fir::ArrayCoorOp op) {
+ .Case([&](fir::ArrayCoorOp op) {
v = op.getMemref();
for (auto coor : op.getIndices()) {
auto idxName = getVariableName(coor, preferDemangledName);
@@ -97,7 +96,7 @@ std::string fir::acc::getVariableName(Value v, bool preferDemangledName) {
}
return true;
})
- .Case<fir::CoordinateOp>([&](fir::CoordinateOp op) {
+ .Case([&](fir::CoordinateOp op) {
std::optional<llvm::ArrayRef<int32_t>> fieldIndices =
op.getFieldIndices();
if (fieldIndices && fieldIndices->size() > 0 &&
@@ -117,7 +116,7 @@ std::string fir::acc::getVariableName(Value v, bool preferDemangledName) {
}
return false;
})
- .Case<hlfir::DesignateOp>([&](hlfir::DesignateOp op) {
+ .Case([&](hlfir::DesignateOp op) {
if (op.getComponent()) {
srcName = op.getComponent().value().str();
prefix =
@@ -135,7 +134,7 @@ std::string fir::acc::getVariableName(Value v, bool preferDemangledName) {
srcName = op.getUniqName().str();
return false;
})
- .Case<fir::AllocaOp>([&](fir::AllocaOp op) {
+ .Case([&](fir::AllocaOp op) {
if (preferDemangledName) {
// Prefer demangled name (bindc_name over uniq_name)
srcName = op.getBindcName() ? *op.getBindcName()
diff --git a/flang/lib/Optimizer/OpenMP/LowerNontemporal.cpp b/flang/lib/Optimizer/OpenMP/LowerNontemporal.cpp
index 5aa1273a1be36..be0bdb77fdca8 100644
--- a/flang/lib/Optimizer/OpenMP/LowerNontemporal.cpp
+++ b/flang/lib/Optimizer/OpenMP/LowerNontemporal.cpp
@@ -41,7 +41,7 @@ class LowerNontemporalPass
operand = op.getMemref();
defOp = operand.getDefiningOp();
})
- .Case<fir::BoxAddrOp>([&](auto op) {
+ .Case([&](fir::BoxAddrOp op) {
operand = op.getVal();
defOp = operand.getDefiningOp();
})
More information about the flang-commits
mailing list