-
Notifications
You must be signed in to change notification settings - Fork 13.5k
[flang] Use isa/dyn_cast/cast/...
free functions.
#90432
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
The corresponding member functions are deprecated.
@llvm/pr-subscribers-flang-codegen @llvm/pr-subscribers-flang-fir-hlfir Author: Christian Sigg (chsigg) ChangesThe corresponding member functions are deprecated. Full diff: https://github.com/llvm/llvm-project/pull/90432.diff 5 Files Affected:
diff --git a/flang/lib/Lower/ConvertVariable.cpp b/flang/lib/Lower/ConvertVariable.cpp
index edf1f24a08e5c9..413563fe95ca38 100644
--- a/flang/lib/Lower/ConvertVariable.cpp
+++ b/flang/lib/Lower/ConvertVariable.cpp
@@ -496,8 +496,8 @@ static fir::GlobalOp defineGlobal(Fortran::lower::AbstractConverter &converter,
if (mlir::isa<fir::SequenceType>(symTy) &&
!Fortran::semantics::IsAllocatableOrPointer(sym)) {
mlir::Type eleTy = mlir::cast<fir::SequenceType>(symTy).getEleTy();
- if (eleTy.isa<mlir::IntegerType, mlir::FloatType, fir::ComplexType,
- fir::LogicalType>()) {
+ if (mlir::isa<mlir::IntegerType, mlir::FloatType, fir::ComplexType,
+ fir::LogicalType>(eleTy)) {
const auto *details =
sym.detailsIf<Fortran::semantics::ObjectEntityDetails>();
if (details->init()) {
diff --git a/flang/lib/Optimizer/CodeGen/CodeGen.cpp b/flang/lib/Optimizer/CodeGen/CodeGen.cpp
index 19628ac71b0b21..b4705aa4799258 100644
--- a/flang/lib/Optimizer/CodeGen/CodeGen.cpp
+++ b/flang/lib/Optimizer/CodeGen/CodeGen.cpp
@@ -1964,12 +1964,12 @@ struct ValueOpCommon {
mlir::ArrayAttr arrAttr) {
llvm::SmallVector<int64_t> indices;
for (auto i = arrAttr.begin(), e = arrAttr.end(); i != e; ++i) {
- if (auto intAttr = i->dyn_cast<mlir::IntegerAttr>()) {
+ if (auto intAttr = mlir::dyn_cast<mlir::IntegerAttr>(*i)) {
indices.push_back(intAttr.getInt());
} else {
- auto fieldName = i->cast<mlir::StringAttr>().getValue();
+ auto fieldName = mlir::cast<mlir::StringAttr>(*i).getValue();
++i;
- auto ty = i->cast<mlir::TypeAttr>().getValue();
+ auto ty = mlir::cast<mlir::TypeAttr>(*i).getValue();
auto index = mlir::cast<fir::RecordType>(ty).getFieldIndex(fieldName);
indices.push_back(index);
}
@@ -3014,7 +3014,7 @@ static void selectMatchAndRewrite(const fir::LLVMTypeConverter &lowering,
caseValues.push_back(intAttr.getInt());
continue;
}
- assert(attr.template dyn_cast_or_null<mlir::UnitAttr>());
+ assert(mlir::dyn_cast_or_null<mlir::UnitAttr>(attr));
assert((t + 1 == conds) && "unit must be last");
defaultDestination = dest;
defaultOperands = destOps ? *destOps : mlir::ValueRange{};
diff --git a/flang/lib/Optimizer/Dialect/FIROps.cpp b/flang/lib/Optimizer/Dialect/FIROps.cpp
index a39087aeb358b9..6773d0adced0ce 100644
--- a/flang/lib/Optimizer/Dialect/FIROps.cpp
+++ b/flang/lib/Optimizer/Dialect/FIROps.cpp
@@ -2498,10 +2498,8 @@ static constexpr llvm::StringRef getTargetOffsetAttr() {
template <typename OpT>
static mlir::LogicalResult verifyIntegralSwitchTerminator(OpT op) {
- if (!op.getSelector()
- .getType()
- .template isa<mlir::IntegerType, mlir::IndexType,
- fir::IntegerType>())
+ if (!mlir::isa<mlir::IntegerType, mlir::IndexType, fir::IntegerType>(
+ op.getSelector().getType()))
return op.emitOpError("must be an integer");
auto cases =
op->template getAttrOfType<mlir::ArrayAttr>(op.getCasesAttr()).getValue();
@@ -2576,7 +2574,7 @@ static void printIntegralSwitchTerminator(OpT op, mlir::OpAsmPrinter &p) {
if (i)
p << ", ";
auto &attr = cases[i];
- if (auto intAttr = attr.template dyn_cast_or_null<mlir::IntegerAttr>())
+ if (auto intAttr = mlir::dyn_cast_or_null<mlir::IntegerAttr>(attr))
p << intAttr.getValue();
else
p.printAttribute(attr);
diff --git a/flang/lib/Optimizer/Dialect/FIRType.cpp b/flang/lib/Optimizer/Dialect/FIRType.cpp
index 38a6a09d1808a6..d9c387ad950e82 100644
--- a/flang/lib/Optimizer/Dialect/FIRType.cpp
+++ b/flang/lib/Optimizer/Dialect/FIRType.cpp
@@ -695,9 +695,9 @@ BoxProcType::verify(llvm::function_ref<mlir::InFlightDiagnostic()> emitError,
}
static bool cannotBePointerOrHeapElementType(mlir::Type eleTy) {
- return eleTy.isa<BoxType, BoxCharType, BoxProcType, ShapeType, ShapeShiftType,
+ return mlir::isa<BoxType, BoxCharType, BoxProcType, ShapeType, ShapeShiftType,
SliceType, FieldType, LenType, HeapType, PointerType,
- ReferenceType, TypeDescType>();
+ ReferenceType, TypeDescType>(eleTy);
}
//===----------------------------------------------------------------------===//
@@ -776,10 +776,10 @@ void fir::CharacterType::print(mlir::AsmPrinter &printer) const {
mlir::LogicalResult
fir::ClassType::verify(llvm::function_ref<mlir::InFlightDiagnostic()> emitError,
mlir::Type eleTy) {
- if (eleTy.isa<fir::RecordType, fir::SequenceType, fir::HeapType,
+ if (mlir::isa<fir::RecordType, fir::SequenceType, fir::HeapType,
fir::PointerType, mlir::NoneType, mlir::IntegerType,
mlir::FloatType, fir::CharacterType, fir::LogicalType,
- fir::ComplexType, mlir::ComplexType>())
+ fir::ComplexType, mlir::ComplexType>(eleTy))
return mlir::success();
return emitError() << "invalid element type\n";
}
@@ -1050,8 +1050,8 @@ void fir::ReferenceType::print(mlir::AsmPrinter &printer) const {
mlir::LogicalResult fir::ReferenceType::verify(
llvm::function_ref<mlir::InFlightDiagnostic()> emitError,
mlir::Type eleTy) {
- if (eleTy.isa<ShapeType, ShapeShiftType, SliceType, FieldType, LenType,
- ReferenceType, TypeDescType>())
+ if (mlir::isa<ShapeType, ShapeShiftType, SliceType, FieldType, LenType,
+ ReferenceType, TypeDescType>(eleTy))
return emitError() << "cannot build a reference to type: " << eleTy << '\n';
return mlir::success();
}
@@ -1126,9 +1126,9 @@ mlir::LogicalResult fir::SequenceType::verify(
llvm::ArrayRef<int64_t> shape, mlir::Type eleTy,
mlir::AffineMapAttr layoutMap) {
// DIMENSION attribute can only be applied to an intrinsic or record type
- if (eleTy.isa<BoxType, BoxCharType, BoxProcType, ShapeType, ShapeShiftType,
+ if (mlir::isa<BoxType, BoxCharType, BoxProcType, ShapeType, ShapeShiftType,
ShiftType, SliceType, FieldType, LenType, HeapType, PointerType,
- ReferenceType, TypeDescType, SequenceType>())
+ ReferenceType, TypeDescType, SequenceType>(eleTy))
return emitError() << "cannot build an array of this element type: "
<< eleTy << '\n';
return mlir::success();
@@ -1199,9 +1199,9 @@ void fir::TypeDescType::print(mlir::AsmPrinter &printer) const {
mlir::LogicalResult fir::TypeDescType::verify(
llvm::function_ref<mlir::InFlightDiagnostic()> emitError,
mlir::Type eleTy) {
- if (eleTy.isa<BoxType, BoxCharType, BoxProcType, ShapeType, ShapeShiftType,
+ if (mlir::isa<BoxType, BoxCharType, BoxProcType, ShapeType, ShapeShiftType,
ShiftType, SliceType, FieldType, LenType, ReferenceType,
- TypeDescType>())
+ TypeDescType>(eleTy))
return emitError() << "cannot build a type descriptor of type: " << eleTy
<< '\n';
return mlir::success();
diff --git a/flang/lib/Optimizer/Transforms/SimplifyIntrinsics.cpp b/flang/lib/Optimizer/Transforms/SimplifyIntrinsics.cpp
index 601bf04ce5e9b3..c61179a7460e32 100644
--- a/flang/lib/Optimizer/Transforms/SimplifyIntrinsics.cpp
+++ b/flang/lib/Optimizer/Transforms/SimplifyIntrinsics.cpp
@@ -1318,11 +1318,9 @@ void SimplifyIntrinsicsPass::runOnOperation() {
// Support only floating point and integer arguments
// now (e.g. logical is skipped here).
- if (!arg1Type->isa<mlir::FloatType>() &&
- !arg1Type->isa<mlir::IntegerType>())
+ if (!mlir::isa<mlir::FloatType, mlir::IntegerType>(*arg1Type))
return;
- if (!arg2Type->isa<mlir::FloatType>() &&
- !arg2Type->isa<mlir::IntegerType>())
+ if (!mlir::isa<mlir::FloatType, mlir::IntegerType>(*arg2Type))
return;
auto typeGenerator = [&type](fir::FirOpBuilder &builder) {
|
This PR contains the NFC flang bits of PR #90413. |
FYI there are a still a bunch of warnings coming out of MLIR (https://lab.llvm.org/buildbot/#/builders/268/builds/13096) and flang (https://lab.llvm.org/buildbot/#/builders/175/builds/47268). You won't be getting email about this because your commit email is a noreply address. I'm not saying you have to set an email there, but this is one consequence of not doing so. I can probably figure out flang, but would appreciate you tracking down the mlir ones, or telling me what patches are in flight since I see some changes in already. |
The corresponding member functions are deprecated.