diff --git a/flang/include/flang/Lower/Support/Utils.h b/flang/include/flang/Lower/Support/Utils.h --- a/flang/include/flang/Lower/Support/Utils.h +++ b/flang/include/flang/Lower/Support/Utils.h @@ -32,7 +32,7 @@ namespace fir { /// Return the integer value of a arith::ConstantOp. inline std::int64_t toInt(mlir::arith::ConstantOp cop) { - return cop.value().cast().getValue().getSExtValue(); + return cop.getValue().cast().getValue().getSExtValue(); } } // namespace fir diff --git a/flang/include/flang/Optimizer/Dialect/FIRDialect.td b/flang/include/flang/Optimizer/Dialect/FIRDialect.td --- a/flang/include/flang/Optimizer/Dialect/FIRDialect.td +++ b/flang/include/flang/Optimizer/Dialect/FIRDialect.td @@ -24,6 +24,7 @@ def fir_Dialect : Dialect { let name = "fir"; let cppNamespace = "::fir"; + let emitAccessorPrefix = kEmitAccessorPrefix_Both; } #endif // FORTRAN_DIALECT_FIR_DIALECT diff --git a/flang/include/flang/Optimizer/Dialect/FIROps.td b/flang/include/flang/Optimizer/Dialect/FIROps.td --- a/flang/include/flang/Optimizer/Dialect/FIROps.td +++ b/flang/include/flang/Optimizer/Dialect/FIROps.td @@ -177,7 +177,6 @@ unsigned numShapeOperands() { return shape().size(); } operand_range getShapeOperands() { return shape(); } static mlir::Type getRefTy(mlir::Type ty); - mlir::Type getInType() { return in_type(); } }]; } @@ -235,7 +234,6 @@ unsigned numShapeOperands() { return shape().size(); } operand_range getShapeOperands() { return shape(); } static mlir::Type getRefTy(mlir::Type ty); - mlir::Type getInType() { return in_type(); } }]; } @@ -484,7 +482,6 @@ } // The selector is the value being tested to determine the destination - mlir::Value getSelector() { return selector(); } mlir::Value getSelector(llvm::ArrayRef operands) { return operands[0]; } @@ -893,8 +890,6 @@ let verifier = "return ::verify(*this);"; let extraClassDeclaration = [{ - mlir::Value getShape() { return shape(); } - mlir::Value getSlice() { return slice(); } bool hasLenParams() { return !typeparams().empty(); } unsigned numLenParams() { return typeparams().size(); } }]; @@ -1673,11 +1668,6 @@ [{ return build($_builder, $_state, resultType, ref, coor, mlir::TypeAttr::get(ref.getType())); }]>, ]; - - let extraClassDeclaration = [{ - /// Get the type of the base object. - mlir::Type getBaseType() { return baseType(); } - }]; } def fir_ExtractValueOp : fir_OneResultOp<"extract_value", [NoSideEffect]> { @@ -1771,12 +1761,6 @@ }]; let verifier = "return ::verify(*this);"; - - let extraClassDeclaration = [{ - std::vector getExtents() { - return {extents().begin(), extents().end()}; - } - }]; } def fir_ShapeShiftOp : fir_Op<"shape_shift", [NoSideEffect]> { @@ -1854,12 +1838,6 @@ }]; let verifier = "return ::verify(*this);"; - - let extraClassDeclaration = [{ - std::vector getOrigins() { - return {origins().begin(), origins().end()}; - } - }]; } def fir_SliceOp : fir_Op<"slice", [NoSideEffect, AttrSizedOperandSegments]> { @@ -2022,9 +2000,6 @@ let extraClassDeclaration = [{ static constexpr llvm::StringRef fieldAttrName() { return "field_id"; } static constexpr llvm::StringRef typeAttrName() { return "on_type"; } - mlir::Type getOnType() { - return (*this)->getAttrOfType(typeAttrName()).getValue(); - } }]; } @@ -2250,7 +2225,7 @@ ]; let extraClassDeclaration = [{ - static constexpr llvm::StringRef getFinalValueAttrName() { + static constexpr llvm::StringRef getFinalValueAttrNameStr() { return "finalValue"; } mlir::Block *getBody() { return ®ion().front(); } @@ -2336,7 +2311,7 @@ }]>]; let extraClassDeclaration = [{ - static constexpr StringRef getCalleeAttrName() { return "callee"; } + static constexpr StringRef getCalleeAttrNameStr() { return "callee"; } mlir::FunctionType getFunctionType(); @@ -2396,7 +2371,7 @@ static constexpr llvm::StringRef passArgAttrName() { return "pass_arg_pos"; } - static constexpr llvm::StringRef getMethodAttrName() { return "method"; } + static constexpr llvm::StringRef getMethodAttrNameStr() { return "method"; } unsigned passArgPos(); }]; } @@ -2646,13 +2621,6 @@ let builders = [OpBuilder<(ins "mlir::TypeAttr":$inty)>]; let verifier = "return ::verify(*this);"; - - let extraClassDeclaration = [{ - mlir::Type getInType() { - // get the type that the type descriptor describes - return (*this)->getAttrOfType("in_type").getValue(); - } - }]; } def fir_NoReassocOp : fir_OneResultOp<"no_reassoc", @@ -2744,8 +2712,8 @@ ]; let extraClassDeclaration = [{ - static constexpr llvm::StringRef symbolAttrName() { return "symref"; } - static constexpr llvm::StringRef getConstantAttrName() { + static constexpr llvm::StringRef symbolAttrNameStr() { return "symref"; } + static constexpr llvm::StringRef getConstantAttrNameStr() { return "constant"; } static constexpr llvm::StringRef linkageAttrName() { return "linkName"; } @@ -2765,9 +2733,6 @@ /// the variable's initial value. void appendInitialValue(mlir::Operation *op); - /// A GlobalOp has one region. - mlir::Region &getRegion() { return (*this)->getRegion(0); } - /// A GlobalOp has one block. mlir::Block &getBlock() { return getRegion().front(); } @@ -2860,10 +2825,6 @@ /// Append a dispatch table entry to the table. void appendTableEntry(mlir::Operation *op); - mlir::Region &getRegion() { - return (*this)->getRegion(0); - } - mlir::Block &getBlock() { return getRegion().front(); } @@ -2892,8 +2853,8 @@ let printer = "::print(p, *this);"; let extraClassDeclaration = [{ - static constexpr llvm::StringRef getMethodAttrName() { return "method"; } - static constexpr llvm::StringRef getProcAttrName() { return "proc"; } + static constexpr llvm::StringRef getMethodAttrNameStr() { return "method"; } + static constexpr llvm::StringRef getProcAttrNameStr() { return "proc"; } }]; } diff --git a/flang/include/flang/Optimizer/Support/Utils.h b/flang/include/flang/Optimizer/Support/Utils.h --- a/flang/include/flang/Optimizer/Support/Utils.h +++ b/flang/include/flang/Optimizer/Support/Utils.h @@ -19,7 +19,7 @@ namespace fir { /// Return the integer value of a arith::ConstantOp. inline std::int64_t toInt(mlir::arith::ConstantOp cop) { - return cop.value().cast().getValue().getSExtValue(); + return cop.getValue().cast().getValue().getSExtValue(); } } // namespace fir diff --git a/flang/include/flang/Optimizer/Transforms/Factory.h b/flang/include/flang/Optimizer/Transforms/Factory.h --- a/flang/include/flang/Optimizer/Transforms/Factory.h +++ b/flang/include/flang/Optimizer/Transforms/Factory.h @@ -38,8 +38,10 @@ if (auto *shapeOp = shapeVal.getDefiningOp()) { if (auto shOp = mlir::dyn_cast(shapeOp)) return shOp.getOrigins(); - if (auto shOp = mlir::dyn_cast(shapeOp)) - return shOp.getOrigins(); + if (auto shOp = mlir::dyn_cast(shapeOp)) { + auto operands = shOp.getOrigins(); + return {operands.begin(), operands.end()}; + } } return {}; } diff --git a/flang/lib/Optimizer/CodeGen/CodeGen.cpp b/flang/lib/Optimizer/CodeGen/CodeGen.cpp --- a/flang/lib/Optimizer/CodeGen/CodeGen.cpp +++ b/flang/lib/Optimizer/CodeGen/CodeGen.cpp @@ -1060,7 +1060,7 @@ mlir::Type vecType = mlir::VectorType::get( insertOp.getType().getShape(), constant.getType()); auto denseAttr = mlir::DenseElementsAttr::get( - vecType.cast(), constant.value()); + vecType.cast(), constant.getValue()); rewriter.setInsertionPointAfter(insertOp); rewriter.replaceOpWithNewOp( insertOp, seqTyAttr, denseAttr); diff --git a/flang/lib/Optimizer/Dialect/FIROps.cpp b/flang/lib/Optimizer/Dialect/FIROps.cpp --- a/flang/lib/Optimizer/Dialect/FIROps.cpp +++ b/flang/lib/Optimizer/Dialect/FIROps.cpp @@ -382,8 +382,10 @@ std::vector fir::ArrayLoadOp::getExtents() { if (auto sh = shape()) if (auto *op = sh.getDefiningOp()) { - if (auto shOp = dyn_cast(op)) - return shOp.getExtents(); + if (auto shOp = dyn_cast(op)) { + auto extents = shOp.getExtents(); + return {extents.begin(), extents.end()}; + } return cast(op).getExtents(); } return {}; @@ -632,7 +634,7 @@ void fir::CallOp::build(mlir::OpBuilder &builder, mlir::OperationState &result, mlir::FuncOp callee, mlir::ValueRange operands) { result.addOperands(operands); - result.addAttribute(getCalleeAttrName(), SymbolRefAttr::get(callee)); + result.addAttribute(getCalleeAttrNameStr(), SymbolRefAttr::get(callee)); result.addTypes(callee.getType().getResults()); } @@ -642,7 +644,7 @@ mlir::ValueRange operands) { result.addOperands(operands); if (callee) - result.addAttribute(getCalleeAttrName(), callee); + result.addAttribute(getCalleeAttrNameStr(), callee); result.addTypes(results); } @@ -921,11 +923,12 @@ llvm::StringRef calleeName; if (failed(parser.parseOptionalKeyword(&calleeName))) { mlir::StringAttr calleeAttr; - if (parser.parseAttribute(calleeAttr, fir::DispatchOp::getMethodAttrName(), + if (parser.parseAttribute(calleeAttr, + fir::DispatchOp::getMethodAttrNameStr(), result.attributes)) return mlir::failure(); } else { - result.addAttribute(fir::DispatchOp::getMethodAttrName(), + result.addAttribute(fir::DispatchOp::getMethodAttrNameStr(), parser.getBuilder().getStringAttr(calleeName)); } if (parser.parseOperandList(operands, mlir::OpAsmParser::Delimiter::Paren) || @@ -939,8 +942,7 @@ } static void print(mlir::OpAsmPrinter &p, fir::DispatchOp &op) { - p << ' ' << op.getOperation()->getAttr(fir::DispatchOp::getMethodAttrName()) - << '('; + p << ' ' << op.getMethodAttr() << '('; p.printOperand(op.object()); if (!op.args().empty()) { p << ", "; @@ -1167,7 +1169,7 @@ // Parse the name as a symbol reference attribute. mlir::SymbolRefAttr nameAttr; - if (parser.parseAttribute(nameAttr, fir::GlobalOp::symbolAttrName(), + if (parser.parseAttribute(nameAttr, fir::GlobalOp::symbolAttrNameStr(), result.attributes)) return mlir::failure(); result.addAttribute(mlir::SymbolTable::getSymbolAttrName(), @@ -1211,11 +1213,10 @@ if (op.linkName().hasValue()) p << ' ' << op.linkName().getValue(); p << ' '; - p.printAttributeWithoutType( - op.getOperation()->getAttr(fir::GlobalOp::symbolAttrName())); + p.printAttributeWithoutType(op.getSymrefAttr()); if (auto val = op.getValueOrNull()) p << '(' << val << ')'; - if (op.getOperation()->getAttr(fir::GlobalOp::getConstantAttrName())) + if (op.getOperation()->getAttr(fir::GlobalOp::getConstantAttrNameStr())) p << " constant"; p << " : "; p.printType(op.getType()); @@ -1237,7 +1238,7 @@ result.addAttribute(typeAttrName(result.name), mlir::TypeAttr::get(type)); result.addAttribute(mlir::SymbolTable::getSymbolAttrName(), builder.getStringAttr(name)); - result.addAttribute(symbolAttrName(), + result.addAttribute(symbolAttrNameStr(), SymbolRefAttr::get(builder.getContext(), name)); if (isConstant) result.addAttribute(constantAttrName(result.name), builder.getUnitAttr()); @@ -1483,13 +1484,13 @@ !isZero(insval2.coor()[0])) return mlir::failure(); auto eai = - dyn_cast_or_null(binf.lhs().getDefiningOp()); + dyn_cast_or_null(binf.getLhs().getDefiningOp()); auto ebi = - dyn_cast_or_null(binf.rhs().getDefiningOp()); + dyn_cast_or_null(binf.getRhs().getDefiningOp()); auto ear = - dyn_cast_or_null(binf2.lhs().getDefiningOp()); + dyn_cast_or_null(binf2.getLhs().getDefiningOp()); auto ebr = - dyn_cast_or_null(binf2.rhs().getDefiningOp()); + dyn_cast_or_null(binf2.getRhs().getDefiningOp()); if (!eai || !ebi || !ear || !ebr || ear.adt() != eai.adt() || ebr.adt() != ebi.adt() || eai.coor().size() != 1 || !isOne(eai.coor()[0]) || ebi.coor().size() != 1 || @@ -1521,7 +1522,7 @@ result.addOperands({lb, ub, step, iterate}); if (finalCountValue) { result.addTypes(builder.getIndexType()); - result.addAttribute(getFinalValueAttrName(), builder.getUnitAttr()); + result.addAttribute(getFinalValueAttrNameStr(), builder.getUnitAttr()); } result.addTypes(iterate.getType()); result.addOperands(iterArgs); @@ -1613,7 +1614,7 @@ llvm::SmallVector argTypes; // Induction variable (hidden) if (prependCount) - result.addAttribute(IterWhileOp::getFinalValueAttrName(), + result.addAttribute(IterWhileOp::getFinalValueAttrNameStr(), builder.getUnitAttr()); else argTypes.push_back(indexType); @@ -1707,7 +1708,7 @@ p << " -> (" << op.getResultTypes() << ')'; } p.printOptionalAttrDictWithKeyword(op->getAttrs(), - {IterWhileOp::getFinalValueAttrName()}); + {op.getFinalValueAttrNameStr()}); p.printRegion(op.region(), /*printEntryBlockArgs=*/false, /*printBlockTerminators=*/true); } @@ -2056,24 +2057,24 @@ // allow `methodName` or `"methodName"` if (failed(parser.parseOptionalKeyword(&methodName))) { mlir::StringAttr methodAttr; - if (parser.parseAttribute(methodAttr, fir::DTEntryOp::getMethodAttrName(), + if (parser.parseAttribute(methodAttr, + fir::DTEntryOp::getMethodAttrNameStr(), result.attributes)) return mlir::failure(); } else { - result.addAttribute(fir::DTEntryOp::getMethodAttrName(), + result.addAttribute(fir::DTEntryOp::getMethodAttrNameStr(), parser.getBuilder().getStringAttr(methodName)); } mlir::SymbolRefAttr calleeAttr; if (parser.parseComma() || - parser.parseAttribute(calleeAttr, fir::DTEntryOp::getProcAttrName(), + parser.parseAttribute(calleeAttr, fir::DTEntryOp::getProcAttrNameStr(), result.attributes)) return mlir::failure(); return mlir::success(); } static void print(mlir::OpAsmPrinter &p, fir::DTEntryOp &op) { - p << ' ' << op.getOperation()->getAttr(fir::DTEntryOp::getMethodAttrName()) - << ", " << op.getOperation()->getAttr(fir::DTEntryOp::getProcAttrName()); + p << ' ' << op.getMethodAttr() << ", " << op.getProcAttr(); } //===----------------------------------------------------------------------===// diff --git a/flang/lib/Optimizer/Transforms/AffinePromotion.cpp b/flang/lib/Optimizer/Transforms/AffinePromotion.cpp --- a/flang/lib/Optimizer/Transforms/AffinePromotion.cpp +++ b/flang/lib/Optimizer/Transforms/AffinePromotion.cpp @@ -325,7 +325,7 @@ static Optional constantIntegerLike(const mlir::Value value) { if (auto definition = value.getDefiningOp()) - if (auto stepAttr = definition.value().dyn_cast()) + if (auto stepAttr = definition.getValue().dyn_cast()) return stepAttr.getInt(); return {}; } diff --git a/flang/lib/Optimizer/Transforms/ArrayValueCopy.cpp b/flang/lib/Optimizer/Transforms/ArrayValueCopy.cpp --- a/flang/lib/Optimizer/Transforms/ArrayValueCopy.cpp +++ b/flang/lib/Optimizer/Transforms/ArrayValueCopy.cpp @@ -333,7 +333,7 @@ accesses.push_back(owner); appendToQueue(update.getResult(1)); } else if (auto br = mlir::dyn_cast(owner)) { - branchOp(br.getDest(), br.destOperands()); + branchOp(br.getDest(), br.getDestOperands()); } else if (auto br = mlir::dyn_cast(owner)) { branchOp(br.getTrueDest(), br.getTrueOperands()); branchOp(br.getFalseDest(), br.getFalseOperands()); diff --git a/flang/unittests/Optimizer/Builder/DoLoopHelperTest.cpp b/flang/unittests/Optimizer/Builder/DoLoopHelperTest.cpp --- a/flang/unittests/Optimizer/Builder/DoLoopHelperTest.cpp +++ b/flang/unittests/Optimizer/Builder/DoLoopHelperTest.cpp @@ -47,8 +47,8 @@ EXPECT_TRUE(mlir::isa(loop.upperBound().getDefiningOp())); auto subOp = dyn_cast(loop.upperBound().getDefiningOp()); EXPECT_EQ(c10, subOp.lhs()); - checkConstantValue(subOp.rhs(), 1); - checkConstantValue(loop.step(), 1); + checkConstantValue(subOp.getRhs(), 1); + checkConstantValue(loop.getStep(), 1); } TEST_F(DoLoopHelperTest, createLoopWithLowerAndUpperBound) { @@ -61,9 +61,9 @@ firBuilder.getUnknownLoc(), firBuilder.getIndexType(), 20); auto loop = helper.createLoop(lb, ub, [&](fir::FirOpBuilder &, mlir::Value index) {}); - checkConstantValue(loop.lowerBound(), 1); - checkConstantValue(loop.upperBound(), 20); - checkConstantValue(loop.step(), 1); + checkConstantValue(loop.getLowerBound(), 1); + checkConstantValue(loop.getUpperBound(), 20); + checkConstantValue(loop.getStep(), 1); } TEST_F(DoLoopHelperTest, createLoopWithStep) { @@ -78,7 +78,7 @@ firBuilder.getUnknownLoc(), firBuilder.getIndexType(), 2); auto loop = helper.createLoop( lb, ub, step, [&](fir::FirOpBuilder &, mlir::Value index) {}); - checkConstantValue(loop.lowerBound(), 1); - checkConstantValue(loop.upperBound(), 20); - checkConstantValue(loop.step(), 2); + checkConstantValue(loop.getLowerBound(), 1); + checkConstantValue(loop.getUpperBound(), 20); + checkConstantValue(loop.getStep(), 2); } diff --git a/flang/unittests/Optimizer/Builder/FIRBuilderTest.cpp b/flang/unittests/Optimizer/Builder/FIRBuilderTest.cpp --- a/flang/unittests/Optimizer/Builder/FIRBuilderTest.cpp +++ b/flang/unittests/Optimizer/Builder/FIRBuilderTest.cpp @@ -64,8 +64,8 @@ auto loc = builder.getUnknownLoc(); auto cdt = createCondition(builder); auto ifBuilder = builder.genIfThen(loc, cdt); - EXPECT_FALSE(ifBuilder.getIfOp().thenRegion().empty()); - EXPECT_TRUE(ifBuilder.getIfOp().elseRegion().empty()); + EXPECT_FALSE(ifBuilder.getIfOp().getThenRegion().empty()); + EXPECT_TRUE(ifBuilder.getIfOp().getElseRegion().empty()); } TEST_F(FIRBuilderTest, genIfThenElse) { @@ -73,8 +73,8 @@ auto loc = builder.getUnknownLoc(); auto cdt = createCondition(builder); auto ifBuilder = builder.genIfThenElse(loc, cdt); - EXPECT_FALSE(ifBuilder.getIfOp().thenRegion().empty()); - EXPECT_FALSE(ifBuilder.getIfOp().elseRegion().empty()); + EXPECT_FALSE(ifBuilder.getIfOp().getThenRegion().empty()); + EXPECT_FALSE(ifBuilder.getIfOp().getElseRegion().empty()); } TEST_F(FIRBuilderTest, genIfWithThen) { @@ -82,8 +82,8 @@ auto loc = builder.getUnknownLoc(); auto cdt = createCondition(builder); auto ifBuilder = builder.genIfOp(loc, {}, cdt, false); - EXPECT_FALSE(ifBuilder.getIfOp().thenRegion().empty()); - EXPECT_TRUE(ifBuilder.getIfOp().elseRegion().empty()); + EXPECT_FALSE(ifBuilder.getIfOp().getThenRegion().empty()); + EXPECT_TRUE(ifBuilder.getIfOp().getElseRegion().empty()); } TEST_F(FIRBuilderTest, genIfWithThenAndElse) { @@ -91,8 +91,8 @@ auto loc = builder.getUnknownLoc(); auto cdt = createCondition(builder); auto ifBuilder = builder.genIfOp(loc, {}, cdt, true); - EXPECT_FALSE(ifBuilder.getIfOp().thenRegion().empty()); - EXPECT_FALSE(ifBuilder.getIfOp().elseRegion().empty()); + EXPECT_FALSE(ifBuilder.getIfOp().getThenRegion().empty()); + EXPECT_FALSE(ifBuilder.getIfOp().getElseRegion().empty()); } //===----------------------------------------------------------------------===// @@ -107,7 +107,7 @@ auto res = builder.genIsNotNull(loc, dummyValue); EXPECT_TRUE(mlir::isa(res.getDefiningOp())); auto cmpOp = dyn_cast(res.getDefiningOp()); - EXPECT_EQ(arith::CmpIPredicate::ne, cmpOp.predicate()); + EXPECT_EQ(arith::CmpIPredicate::ne, cmpOp.getPredicate()); } TEST_F(FIRBuilderTest, genIsNull) { @@ -118,7 +118,7 @@ auto res = builder.genIsNull(loc, dummyValue); EXPECT_TRUE(mlir::isa(res.getDefiningOp())); auto cmpOp = dyn_cast(res.getDefiningOp()); - EXPECT_EQ(arith::CmpIPredicate::eq, cmpOp.predicate()); + EXPECT_EQ(arith::CmpIPredicate::eq, cmpOp.getPredicate()); } TEST_F(FIRBuilderTest, createZeroConstant) { @@ -147,7 +147,8 @@ EXPECT_TRUE(mlir::isa(cst.getDefiningOp())); auto cstOp = dyn_cast(cst.getDefiningOp()); EXPECT_EQ(realTy, cstOp.getType()); - EXPECT_EQ(0u, cstOp.value().cast().getValue().convertToDouble()); + EXPECT_EQ( + 0u, cstOp.getValue().cast().getValue().convertToDouble()); } TEST_F(FIRBuilderTest, createBool) { diff --git a/flang/unittests/Optimizer/Builder/Runtime/NumericTest.cpp b/flang/unittests/Optimizer/Builder/Runtime/NumericTest.cpp --- a/flang/unittests/Optimizer/Builder/Runtime/NumericTest.cpp +++ b/flang/unittests/Optimizer/Builder/Runtime/NumericTest.cpp @@ -61,7 +61,7 @@ mlir::Value cmp = selectOp.condition(); EXPECT_TRUE(mlir::isa(cmp.getDefiningOp())); auto cmpOp = mlir::dyn_cast(cmp.getDefiningOp()); - EXPECT_EQ(s, cmpOp.lhs()); + EXPECT_EQ(s, cmpOp.getLhs()); } TEST_F(RuntimeCallTest, genNearestTest) {