From de3695a393727344232af81765aaeb7f9dd33e18 Mon Sep 17 00:00:00 2001 From: Mehdi Amini Date: Wed, 16 Oct 2024 11:08:55 +0200 Subject: [PATCH] Revert "[MLIR][TableGen] Use const pointers for various `Init` objects (#112316)" This reverts commit 1ae9fe5ea0c502195f0c857759e2277ba9c8b338. --- mlir/include/mlir/TableGen/AttrOrTypeDef.h | 2 +- mlir/include/mlir/TableGen/Dialect.h | 2 +- mlir/include/mlir/TableGen/Operator.h | 15 ++++---- mlir/lib/TableGen/AttrOrTypeDef.cpp | 12 +++--- mlir/lib/TableGen/Attribute.cpp | 2 +- mlir/lib/TableGen/Dialect.cpp | 2 +- mlir/lib/TableGen/Interfaces.cpp | 6 +-- mlir/lib/TableGen/Operator.cpp | 21 +++++----- mlir/lib/TableGen/Pattern.cpp | 2 +- mlir/lib/TableGen/Type.cpp | 2 +- mlir/lib/Tools/mlir-tblgen/MlirTblgenMain.cpp | 16 ++++---- mlir/tools/mlir-tblgen/BytecodeDialectGen.cpp | 38 +++++++++---------- mlir/tools/mlir-tblgen/DialectGen.cpp | 9 ++--- mlir/tools/mlir-tblgen/OmpOpGen.cpp | 19 ++++------ 14 files changed, 68 insertions(+), 80 deletions(-) diff --git a/mlir/include/mlir/TableGen/AttrOrTypeDef.h b/mlir/include/mlir/TableGen/AttrOrTypeDef.h index c3d730e42ef70e8..36744c85bc70865 100644 --- a/mlir/include/mlir/TableGen/AttrOrTypeDef.h +++ b/mlir/include/mlir/TableGen/AttrOrTypeDef.h @@ -105,7 +105,7 @@ class AttrOrTypeParameter { std::optional getDefaultValue() const; /// Return the underlying def of this parameter. - const llvm::Init *getDef() const; + llvm::Init *getDef() const; /// The parameter is pointer-comparable. bool operator==(const AttrOrTypeParameter &other) const { diff --git a/mlir/include/mlir/TableGen/Dialect.h b/mlir/include/mlir/TableGen/Dialect.h index ea8f40555e4451b..3530d240c976c64 100644 --- a/mlir/include/mlir/TableGen/Dialect.h +++ b/mlir/include/mlir/TableGen/Dialect.h @@ -92,7 +92,7 @@ class Dialect { /// dialect. bool usePropertiesForAttributes() const; - const llvm::DagInit *getDiscardableAttributes() const; + llvm::DagInit *getDiscardableAttributes() const; const llvm::Record *getDef() const { return def; } diff --git a/mlir/include/mlir/TableGen/Operator.h b/mlir/include/mlir/TableGen/Operator.h index 9e570373d9cd327..768291a3a7267b2 100644 --- a/mlir/include/mlir/TableGen/Operator.h +++ b/mlir/include/mlir/TableGen/Operator.h @@ -119,15 +119,14 @@ class Operator { /// A utility iterator over a list of variable decorators. struct VariableDecoratorIterator - : public llvm::mapped_iterator { + : public llvm::mapped_iterator { /// Initializes the iterator to the specified iterator. - VariableDecoratorIterator(const llvm::Init *const *it) - : llvm::mapped_iterator( - it, &unwrap) {} - static VariableDecorator unwrap(const llvm::Init *init); + VariableDecoratorIterator(llvm::Init *const *it) + : llvm::mapped_iterator(it, + &unwrap) {} + static VariableDecorator unwrap(llvm::Init *init); }; using var_decorator_iterator = VariableDecoratorIterator; using var_decorator_range = llvm::iterator_range; diff --git a/mlir/lib/TableGen/AttrOrTypeDef.cpp b/mlir/lib/TableGen/AttrOrTypeDef.cpp index e72ca155bcf7654..9b9d9fd2317d992 100644 --- a/mlir/lib/TableGen/AttrOrTypeDef.cpp +++ b/mlir/lib/TableGen/AttrOrTypeDef.cpp @@ -40,7 +40,7 @@ AttrOrTypeDef::AttrOrTypeDef(const llvm::Record *def) : def(def) { auto *builderList = dyn_cast_or_null(def->getValueInit("builders")); if (builderList && !builderList->empty()) { - for (const llvm::Init *init : builderList->getValues()) { + for (llvm::Init *init : builderList->getValues()) { AttrOrTypeBuilder builder(cast(init)->getDef(), def->getLoc()); @@ -58,8 +58,8 @@ AttrOrTypeDef::AttrOrTypeDef(const llvm::Record *def) : def(def) { if (auto *traitList = def->getValueAsListInit("traits")) { SmallPtrSet traitSet; traits.reserve(traitSet.size()); - llvm::unique_function processTraitList = - [&](const llvm::ListInit *traitList) { + llvm::unique_function processTraitList = + [&](llvm::ListInit *traitList) { for (auto *traitInit : *traitList) { if (!traitSet.insert(traitInit).second) continue; @@ -335,9 +335,7 @@ std::optional AttrOrTypeParameter::getDefaultValue() const { return result && !result->empty() ? result : std::nullopt; } -const llvm::Init *AttrOrTypeParameter::getDef() const { - return def->getArg(index); -} +llvm::Init *AttrOrTypeParameter::getDef() const { return def->getArg(index); } std::optional AttrOrTypeParameter::getConstraint() const { if (auto *param = dyn_cast(getDef())) @@ -351,7 +349,7 @@ std::optional AttrOrTypeParameter::getConstraint() const { //===----------------------------------------------------------------------===// bool AttributeSelfTypeParameter::classof(const AttrOrTypeParameter *param) { - const llvm::Init *paramDef = param->getDef(); + llvm::Init *paramDef = param->getDef(); if (auto *paramDefInit = dyn_cast(paramDef)) return paramDefInit->getDef()->isSubClassOf("AttributeSelfTypeParameter"); return false; diff --git a/mlir/lib/TableGen/Attribute.cpp b/mlir/lib/TableGen/Attribute.cpp index 887553bca66102d..de930cb40070321 100644 --- a/mlir/lib/TableGen/Attribute.cpp +++ b/mlir/lib/TableGen/Attribute.cpp @@ -126,7 +126,7 @@ StringRef Attribute::getDerivedCodeBody() const { Dialect Attribute::getDialect() const { const llvm::RecordVal *record = def->getValue("dialect"); if (record && record->getValue()) { - if (const DefInit *init = dyn_cast(record->getValue())) + if (DefInit *init = dyn_cast(record->getValue())) return Dialect(init->getDef()); } return Dialect(nullptr); diff --git a/mlir/lib/TableGen/Dialect.cpp b/mlir/lib/TableGen/Dialect.cpp index ef39818e439b3e3..081f6e56f9ded46 100644 --- a/mlir/lib/TableGen/Dialect.cpp +++ b/mlir/lib/TableGen/Dialect.cpp @@ -106,7 +106,7 @@ bool Dialect::usePropertiesForAttributes() const { return def->getValueAsBit("usePropertiesForAttributes"); } -const llvm::DagInit *Dialect::getDiscardableAttributes() const { +llvm::DagInit *Dialect::getDiscardableAttributes() const { return def->getValueAsDag("discardableAttrs"); } diff --git a/mlir/lib/TableGen/Interfaces.cpp b/mlir/lib/TableGen/Interfaces.cpp index 4a6709a43d0a8f7..a209b003b0f3bbe 100644 --- a/mlir/lib/TableGen/Interfaces.cpp +++ b/mlir/lib/TableGen/Interfaces.cpp @@ -22,7 +22,7 @@ using namespace mlir::tblgen; //===----------------------------------------------------------------------===// InterfaceMethod::InterfaceMethod(const llvm::Record *def) : def(def) { - const llvm::DagInit *args = def->getValueAsDag("arguments"); + llvm::DagInit *args = def->getValueAsDag("arguments"); for (unsigned i = 0, e = args->getNumArgs(); i != e; ++i) { arguments.push_back( {llvm::cast(args->getArg(i))->getValue(), @@ -78,7 +78,7 @@ Interface::Interface(const llvm::Record *def) : def(def) { // Initialize the interface methods. auto *listInit = dyn_cast(def->getValueInit("methods")); - for (const llvm::Init *init : listInit->getValues()) + for (llvm::Init *init : listInit->getValues()) methods.emplace_back(cast(init)->getDef()); // Initialize the interface base classes. @@ -98,7 +98,7 @@ Interface::Interface(const llvm::Record *def) : def(def) { baseInterfaces.push_back(std::make_unique(baseInterface)); basesAdded.insert(baseInterface.getName()); }; - for (const llvm::Init *init : basesInit->getValues()) + for (llvm::Init *init : basesInit->getValues()) addBaseInterfaceFn(Interface(cast(init)->getDef())); } diff --git a/mlir/lib/TableGen/Operator.cpp b/mlir/lib/TableGen/Operator.cpp index 86670e9f87127c4..6a33ff5ecd67214 100644 --- a/mlir/lib/TableGen/Operator.cpp +++ b/mlir/lib/TableGen/Operator.cpp @@ -161,7 +161,7 @@ std::string Operator::getQualCppClassName() const { StringRef Operator::getCppNamespace() const { return cppNamespace; } int Operator::getNumResults() const { - const DagInit *results = def.getValueAsDag("results"); + DagInit *results = def.getValueAsDag("results"); return results->getNumArgs(); } @@ -198,12 +198,12 @@ auto Operator::getResults() const -> const_value_range { } TypeConstraint Operator::getResultTypeConstraint(int index) const { - const DagInit *results = def.getValueAsDag("results"); + DagInit *results = def.getValueAsDag("results"); return TypeConstraint(cast(results->getArg(index))); } StringRef Operator::getResultName(int index) const { - const DagInit *results = def.getValueAsDag("results"); + DagInit *results = def.getValueAsDag("results"); return results->getArgNameStr(index); } @@ -241,7 +241,7 @@ Operator::arg_range Operator::getArgs() const { } StringRef Operator::getArgName(int index) const { - const DagInit *argumentValues = def.getValueAsDag("arguments"); + DagInit *argumentValues = def.getValueAsDag("arguments"); return argumentValues->getArgNameStr(index); } @@ -557,7 +557,7 @@ void Operator::populateOpStructure() { auto *opVarClass = recordKeeper.getClass("OpVariable"); numNativeAttributes = 0; - const DagInit *argumentValues = def.getValueAsDag("arguments"); + DagInit *argumentValues = def.getValueAsDag("arguments"); unsigned numArgs = argumentValues->getNumArgs(); // Mapping from name of to argument or result index. Arguments are indexed @@ -721,8 +721,8 @@ void Operator::populateOpStructure() { " to precede it in traits list"); }; - std::function insert; - insert = [&](const llvm::ListInit *traitList) { + std::function insert; + insert = [&](llvm::ListInit *traitList) { for (auto *traitInit : *traitList) { auto *def = cast(traitInit)->getDef(); if (def->isSubClassOf("TraitList")) { @@ -780,7 +780,7 @@ void Operator::populateOpStructure() { auto *builderList = dyn_cast_or_null(def.getValueInit("builders")); if (builderList && !builderList->empty()) { - for (const llvm::Init *init : builderList->getValues()) + for (llvm::Init *init : builderList->getValues()) builders.emplace_back(cast(init)->getDef(), def.getLoc()); } else if (skipDefaultBuilders()) { PrintFatalError( @@ -818,8 +818,7 @@ bool Operator::hasAssemblyFormat() const { } StringRef Operator::getAssemblyFormat() const { - return TypeSwitch( - def.getValueInit("assemblyFormat")) + return TypeSwitch(def.getValueInit("assemblyFormat")) .Case([&](auto *init) { return init->getValue(); }); } @@ -833,7 +832,7 @@ void Operator::print(llvm::raw_ostream &os) const { } } -auto Operator::VariableDecoratorIterator::unwrap(const llvm::Init *init) +auto Operator::VariableDecoratorIterator::unwrap(llvm::Init *init) -> VariableDecorator { return VariableDecorator(cast(init)->getDef()); } diff --git a/mlir/lib/TableGen/Pattern.cpp b/mlir/lib/TableGen/Pattern.cpp index bee20354387fd69..6437839ef20849b 100644 --- a/mlir/lib/TableGen/Pattern.cpp +++ b/mlir/lib/TableGen/Pattern.cpp @@ -700,7 +700,7 @@ int Pattern::getBenefit() const { // The initial benefit value is a heuristic with number of ops in the source // pattern. int initBenefit = getSourcePattern().getNumOps(); - const llvm::DagInit *delta = def.getValueAsDag("benefitDelta"); + llvm::DagInit *delta = def.getValueAsDag("benefitDelta"); if (delta->getNumArgs() != 1 || !isa(delta->getArg(0))) { PrintFatalError(&def, "The 'addBenefit' takes and only takes one integer value"); diff --git a/mlir/lib/TableGen/Type.cpp b/mlir/lib/TableGen/Type.cpp index c3b813ec598d0a0..cda752297988bbd 100644 --- a/mlir/lib/TableGen/Type.cpp +++ b/mlir/lib/TableGen/Type.cpp @@ -50,7 +50,7 @@ std::optional TypeConstraint::getBuilderCall() const { const llvm::RecordVal *builderCall = baseType->getValue("builderCall"); if (!builderCall || !builderCall->getValue()) return std::nullopt; - return TypeSwitch>( + return TypeSwitch>( builderCall->getValue()) .Case([&](auto *init) { StringRef value = init->getValue(); diff --git a/mlir/lib/Tools/mlir-tblgen/MlirTblgenMain.cpp b/mlir/lib/Tools/mlir-tblgen/MlirTblgenMain.cpp index 20ad4292a548bfd..7119324dd125d55 100644 --- a/mlir/lib/Tools/mlir-tblgen/MlirTblgenMain.cpp +++ b/mlir/lib/Tools/mlir-tblgen/MlirTblgenMain.cpp @@ -30,8 +30,8 @@ enum DeprecatedAction { None, Warn, Error }; static DeprecatedAction actionOnDeprecatedValue; // Returns if there is a use of `deprecatedInit` in `field`. -static bool findUse(const Init *field, const Init *deprecatedInit, - llvm::DenseMap &known) { +static bool findUse(Init *field, Init *deprecatedInit, + llvm::DenseMap &known) { if (field == deprecatedInit) return true; @@ -64,13 +64,13 @@ static bool findUse(const Init *field, const Init *deprecatedInit, if (findUse(dagInit->getOperator(), deprecatedInit, known)) return memoize(true); - return memoize(llvm::any_of(dagInit->getArgs(), [&](const Init *arg) { + return memoize(llvm::any_of(dagInit->getArgs(), [&](Init *arg) { return findUse(arg, deprecatedInit, known); })); } - if (const ListInit *li = dyn_cast(field)) { - return memoize(llvm::any_of(li->getValues(), [&](const Init *jt) { + if (ListInit *li = dyn_cast(field)) { + return memoize(llvm::any_of(li->getValues(), [&](Init *jt) { return findUse(jt, deprecatedInit, known); })); } @@ -83,8 +83,8 @@ static bool findUse(const Init *field, const Init *deprecatedInit, } // Returns if there is a use of `deprecatedInit` in `record`. -static bool findUse(Record &record, const Init *deprecatedInit, - llvm::DenseMap &known) { +static bool findUse(Record &record, Init *deprecatedInit, + llvm::DenseMap &known) { return llvm::any_of(record.getValues(), [&](const RecordVal &val) { return findUse(val.getValue(), deprecatedInit, known); }); @@ -100,7 +100,7 @@ static void warnOfDeprecatedUses(const RecordKeeper &records) { if (!r || !r->getValue()) continue; - llvm::DenseMap hasUse; + llvm::DenseMap hasUse; if (auto *si = dyn_cast(r->getValue())) { for (auto &jt : records.getDefs()) { // Skip anonymous defs. diff --git a/mlir/tools/mlir-tblgen/BytecodeDialectGen.cpp b/mlir/tools/mlir-tblgen/BytecodeDialectGen.cpp index 6a3d5a25e28cd9a..86ebaf2cf27dfeb 100644 --- a/mlir/tools/mlir-tblgen/BytecodeDialectGen.cpp +++ b/mlir/tools/mlir-tblgen/BytecodeDialectGen.cpp @@ -46,9 +46,8 @@ class Generator { private: /// Emits parse calls to construct given kind. void emitParseHelper(StringRef kind, StringRef returnType, StringRef builder, - ArrayRef args, - ArrayRef argNames, StringRef failure, - mlir::raw_indented_ostream &ios); + ArrayRef args, ArrayRef argNames, + StringRef failure, mlir::raw_indented_ostream &ios); /// Emits print instructions. void emitPrintHelper(const Record *memberRec, StringRef kind, @@ -136,12 +135,10 @@ void Generator::emitParse(StringRef kind, const Record &x) { R"(static {0} read{1}(MLIRContext* context, DialectBytecodeReader &reader) )"; mlir::raw_indented_ostream os(output); std::string returnType = getCType(&x); - os << formatv(head, - kind == "attribute" ? "::mlir::Attribute" : "::mlir::Type", - x.getName()); - const DagInit *members = x.getValueAsDag("members"); - SmallVector argNames = llvm::to_vector( - map_range(members->getArgNames(), [](const StringInit *init) { + os << formatv(head, kind == "attribute" ? "::mlir::Attribute" : "::mlir::Type", x.getName()); + DagInit *members = x.getValueAsDag("members"); + SmallVector argNames = + llvm::to_vector(map_range(members->getArgNames(), [](StringInit *init) { return init->getAsUnquotedString(); })); StringRef builder = x.getValueAsString("cBuilder").trim(); @@ -151,7 +148,7 @@ void Generator::emitParse(StringRef kind, const Record &x) { } void printParseConditional(mlir::raw_indented_ostream &ios, - ArrayRef args, + ArrayRef args, ArrayRef argNames) { ios << "if "; auto parenScope = ios.scope("(", ") {"); @@ -162,7 +159,7 @@ void printParseConditional(mlir::raw_indented_ostream &ios, }; auto parsedArgs = - llvm::to_vector(make_filter_range(args, [](const Init *const attr) { + llvm::to_vector(make_filter_range(args, [](Init *const attr) { const Record *def = cast(attr)->getDef(); if (def->isSubClassOf("Array")) return true; @@ -171,7 +168,7 @@ void printParseConditional(mlir::raw_indented_ostream &ios, interleave( zip(parsedArgs, argNames), - [&](std::tuple it) { + [&](std::tuple it) { const Record *attr = cast(std::get<0>(it))->getDef(); std::string parser; if (auto optParser = attr->getValueAsOptionalString("cParser")) { @@ -199,7 +196,7 @@ void printParseConditional(mlir::raw_indented_ostream &ios, } void Generator::emitParseHelper(StringRef kind, StringRef returnType, - StringRef builder, ArrayRef args, + StringRef builder, ArrayRef args, ArrayRef argNames, StringRef failure, mlir::raw_indented_ostream &ios) { @@ -213,7 +210,7 @@ void Generator::emitParseHelper(StringRef kind, StringRef returnType, // Print decls. std::string lastCType = ""; for (auto [arg, name] : zip(args, argNames)) { - const DefInit *first = dyn_cast(arg); + DefInit *first = dyn_cast(arg); if (!first) PrintFatalError("Unexpected type for " + name); const Record *def = first->getDef(); @@ -254,14 +251,13 @@ void Generator::emitParseHelper(StringRef kind, StringRef returnType, std::string returnType = getCType(def); ios << "auto " << listHelperName(name) << " = [&]() -> FailureOr<" << returnType << "> "; - SmallVector args; + SmallVector args; SmallVector argNames; if (def->isSubClassOf("CompositeBytecode")) { - const DagInit *members = def->getValueAsDag("members"); - args = llvm::to_vector(map_range( - members->getArgs(), [](Init *init) { return (const Init *)init; })); + DagInit *members = def->getValueAsDag("members"); + args = llvm::to_vector(members->getArgs()); argNames = llvm::to_vector( - map_range(members->getArgNames(), [](const StringInit *init) { + map_range(members->getArgNames(), [](StringInit *init) { return init->getAsUnquotedString(); })); } else { @@ -336,7 +332,7 @@ void Generator::emitPrint(StringRef kind, StringRef type, auto *members = rec->getValueAsDag("members"); for (auto [arg, name] : llvm::zip(members->getArgs(), members->getArgNames())) { - const DefInit *def = dyn_cast(arg); + DefInit *def = dyn_cast(arg); assert(def); const Record *memberRec = def->getDef(); emitPrintHelper(memberRec, kind, kind, name->getAsUnquotedString(), os); @@ -389,7 +385,7 @@ void Generator::emitPrintHelper(const Record *memberRec, StringRef kind, auto *members = memberRec->getValueAsDag("members"); for (auto [arg, argName] : zip(members->getArgs(), members->getArgNames())) { - const DefInit *def = dyn_cast(arg); + DefInit *def = dyn_cast(arg); assert(def); emitPrintHelper(def->getDef(), kind, parent, argName->getAsUnquotedString(), ios); diff --git a/mlir/tools/mlir-tblgen/DialectGen.cpp b/mlir/tools/mlir-tblgen/DialectGen.cpp index 414cad5e1dcc2e7..55c3d9da2590056 100644 --- a/mlir/tools/mlir-tblgen/DialectGen.cpp +++ b/mlir/tools/mlir-tblgen/DialectGen.cpp @@ -46,10 +46,10 @@ using DialectFilterIterator = } // namespace static void populateDiscardableAttributes( - Dialect &dialect, const llvm::DagInit *discardableAttrDag, + Dialect &dialect, llvm::DagInit *discardableAttrDag, SmallVector> &discardableAttributes) { for (int i : llvm::seq(0, discardableAttrDag->getNumArgs())) { - const llvm::Init *arg = discardableAttrDag->getArg(i); + llvm::Init *arg = discardableAttrDag->getArg(i); StringRef givenName = discardableAttrDag->getArgNameStr(i); if (givenName.empty()) @@ -271,8 +271,7 @@ static void emitDialectDecl(Dialect &dialect, raw_ostream &os) { if (dialect.hasOperationInterfaceFallback()) os << operationInterfaceFallbackDecl; - const llvm::DagInit *discardableAttrDag = - dialect.getDiscardableAttributes(); + llvm::DagInit *discardableAttrDag = dialect.getDiscardableAttributes(); SmallVector> discardableAttributes; populateDiscardableAttributes(dialect, discardableAttrDag, discardableAttributes); @@ -371,7 +370,7 @@ static void emitDialectDef(Dialect &dialect, const RecordKeeper &records, StringRef superClassName = dialect.isExtensible() ? "ExtensibleDialect" : "Dialect"; - const llvm::DagInit *discardableAttrDag = dialect.getDiscardableAttributes(); + llvm::DagInit *discardableAttrDag = dialect.getDiscardableAttributes(); SmallVector> discardableAttributes; populateDiscardableAttributes(dialect, discardableAttrDag, discardableAttributes); diff --git a/mlir/tools/mlir-tblgen/OmpOpGen.cpp b/mlir/tools/mlir-tblgen/OmpOpGen.cpp index 8716667723a3730..1c20a6a9bcf4e89 100644 --- a/mlir/tools/mlir-tblgen/OmpOpGen.cpp +++ b/mlir/tools/mlir-tblgen/OmpOpGen.cpp @@ -102,13 +102,11 @@ static StringRef extractOmpClauseName(const Record *clause) { /// Check that the given argument, identified by its name and initialization /// value, is present in the \c arguments `dag`. -static bool verifyArgument(const DagInit *arguments, StringRef argName, - const Init *argInit) { +static bool verifyArgument(DagInit *arguments, StringRef argName, + Init *argInit) { auto range = zip_equal(arguments->getArgNames(), arguments->getArgs()); return llvm::any_of( - range, - [&](std::tuple - v) { + range, [&](std::tuple v) { return std::get<0>(v)->getAsUnquotedString() == argName && std::get<1>(v) == argInit; }); @@ -143,8 +141,8 @@ static void verifyClause(const Record *op, const Record *clause) { StringRef clauseClassName = extractOmpClauseName(clause); if (!clause->getValueAsBit("ignoreArgs")) { - const DagInit *opArguments = op->getValueAsDag("arguments"); - const DagInit *arguments = clause->getValueAsDag("arguments"); + DagInit *opArguments = op->getValueAsDag("arguments"); + DagInit *arguments = clause->getValueAsDag("arguments"); for (auto [name, arg] : zip(arguments->getArgNames(), arguments->getArgs())) { @@ -210,9 +208,8 @@ static void verifyClause(const Record *op, const Record *clause) { /// /// \return the name of the base type to represent elements of the argument /// type. -static StringRef translateArgumentType(ArrayRef loc, - const StringInit *name, const Init *init, - int &nest, int &rank) { +static StringRef translateArgumentType(ArrayRef loc, StringInit *name, + Init *init, int &nest, int &rank) { const Record *def = cast(init)->getDef(); llvm::StringSet<> superClasses; @@ -285,7 +282,7 @@ static void genClauseOpsStruct(const Record *clause, raw_ostream &os) { StringRef clauseName = extractOmpClauseName(clause); os << "struct " << clauseName << "ClauseOps {\n"; - const DagInit *arguments = clause->getValueAsDag("arguments"); + DagInit *arguments = clause->getValueAsDag("arguments"); for (auto [name, arg] : zip_equal(arguments->getArgNames(), arguments->getArgs())) { int nest = 0, rank = 1;