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 @@ -2577,6 +2577,9 @@ ]; let extraClassDeclaration = [{ + static constexpr llvm::StringRef getFinalValueAttrName() { + return "finalValue"; + } mlir::Block *getBody() { return ®ion().front(); } mlir::Value getIterateVar() { return getBody()->getArgument(1); } mlir::Value getInductionVar() { return getBody()->getArgument(0); } 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 @@ -799,7 +799,7 @@ result.addOperands({lb, ub, step, iterate}); if (finalCountValue) { result.addTypes(builder.getIndexType()); - result.addAttribute(finalValueAttrName(result.name), builder.getUnitAttr()); + result.addAttribute(getFinalValueAttrName(), builder.getUnitAttr()); } result.addTypes(iterate.getType()); result.addOperands(iterArgs); @@ -841,7 +841,7 @@ return mlir::failure(); // Parse the initial iteration arguments. - llvm::SmallVector regionArgs; + llvm::SmallVector regionArgs; auto prependCount = false; // Induction variable. @@ -849,8 +849,8 @@ regionArgs.push_back(iterateVar); if (succeeded(parser.parseOptionalKeyword("iter_args"))) { - llvm::SmallVector operands; - llvm::SmallVector regionTypes; + llvm::SmallVector operands; + llvm::SmallVector regionTypes; // Parse assignment list and results type list. if (parser.parseAssignmentList(regionArgs, operands) || parser.parseArrowTypeList(regionTypes)) @@ -860,9 +860,9 @@ llvm::ArrayRef resTypes = regionTypes; resTypes = prependCount ? resTypes.drop_front(2) : resTypes; // Resolve input operands. - for (auto operand_type : llvm::zip(operands, resTypes)) - if (parser.resolveOperand(std::get<0>(operand_type), - std::get<1>(operand_type), result.operands)) + for (auto operandType : llvm::zip(operands, resTypes)) + if (parser.resolveOperand(std::get<0>(operandType), + std::get<1>(operandType), result.operands)) return failure(); if (prependCount) { result.addTypes(regionTypes); @@ -871,7 +871,7 @@ result.addTypes(resTypes); } } else if (succeeded(parser.parseOptionalArrow())) { - llvm::SmallVector typeList; + llvm::SmallVector typeList; if (parser.parseLParen() || parser.parseTypeList(typeList) || parser.parseRParen()) return failure(); @@ -888,10 +888,10 @@ if (parser.parseOptionalAttrDictWithKeyword(result.attributes)) return mlir::failure(); - llvm::SmallVector argTypes; + llvm::SmallVector argTypes; // Induction variable (hidden) if (prependCount) - result.addAttribute(IterWhileOp::finalValueAttrName(result.name), + result.addAttribute(IterWhileOp::getFinalValueAttrName(), builder.getUnitAttr()); else argTypes.push_back(indexType); @@ -984,7 +984,8 @@ } else if (op.finalValue()) { p << " -> (" << op.getResultTypes() << ')'; } - p.printOptionalAttrDictWithKeyword(op->getAttrs(), {"finalValue"}); + p.printOptionalAttrDictWithKeyword(op->getAttrs(), + {IterWhileOp::getFinalValueAttrName()}); p.printRegion(op.region(), /*printEntryBlockArgs=*/false, /*printBlockTerminators=*/true); } @@ -997,7 +998,7 @@ mlir::LogicalResult fir::IterWhileOp::moveOutOfLoop(llvm::ArrayRef ops) { - for (auto op : ops) + for (auto *op : ops) op->moveBefore(*this); return success(); }