From 30f15b687bbc087f50dcc872326457bd708a00cc Mon Sep 17 00:00:00 2001 From: Rahul Joshi Date: Tue, 1 Oct 2024 06:52:48 -0700 Subject: [PATCH] [Clang][TableGen] Change Opcodes Emitter to use const Record * (#110588) This is a part of effort to have better const correctness in TableGen backends: https://discourse.llvm.org/t/psa-planned-changes-to-tablegen-getallderiveddefinitions-api-potential-downstream-breakages/81089 --- clang/utils/TableGen/ClangOpcodesEmitter.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/clang/utils/TableGen/ClangOpcodesEmitter.cpp b/clang/utils/TableGen/ClangOpcodesEmitter.cpp index a18220fe23c417..94c361c7d544f5 100644 --- a/clang/utils/TableGen/ClangOpcodesEmitter.cpp +++ b/clang/utils/TableGen/ClangOpcodesEmitter.cpp @@ -69,7 +69,7 @@ void Enumerate(const Record *R, StringRef N, if (const auto *TypeClass = dyn_cast(Types->getElement(I))) { for (const auto *Type : - TypeClass->getDef()->getValueAsListOfDefs("Types")) { + TypeClass->getDef()->getValueAsListOfConstDefs("Types")) { TypePath.push_back(Type); Rec(I + 1, ID + Type->getName()); TypePath.pop_back(); @@ -117,7 +117,7 @@ void ClangOpcodesEmitter::EmitInterp(raw_ostream &OS, StringRef N, [this, R, &OS, &N](ArrayRef TS, const Twine &ID) { bool CanReturn = R->getValueAsBit("CanReturn"); bool ChangesPC = R->getValueAsBit("ChangesPC"); - const auto &Args = R->getValueAsListOfDefs("Args"); + const auto &Args = R->getValueAsListOfConstDefs("Args"); OS << "case OP_" << ID << ": {\n"; @@ -176,7 +176,7 @@ void ClangOpcodesEmitter::EmitDisasm(raw_ostream &OS, StringRef N, OS << " PrintName(\"" << ID << "\");\n"; OS << " OS << \"\\t\""; - for (const auto *Arg : R->getValueAsListOfDefs("Args")) { + for (const auto *Arg : R->getValueAsListOfConstDefs("Args")) { OS << " << ReadArg<" << Arg->getValueAsString("Name") << ">(P, PC)"; OS << " << \" \""; } @@ -194,7 +194,7 @@ void ClangOpcodesEmitter::EmitEmitter(raw_ostream &OS, StringRef N, OS << "#ifdef GET_LINK_IMPL\n"; Enumerate(R, N, [R, &OS](ArrayRef, const Twine &ID) { - const auto &Args = R->getValueAsListOfDefs("Args"); + const auto &Args = R->getValueAsListOfConstDefs("Args"); // Emit the list of arguments. OS << "bool ByteCodeEmitter::emit" << ID << "("; @@ -227,7 +227,7 @@ void ClangOpcodesEmitter::EmitEmitter(raw_ostream &OS, StringRef N, void ClangOpcodesEmitter::EmitProto(raw_ostream &OS, StringRef N, const Record *R) { OS << "#if defined(GET_EVAL_PROTO) || defined(GET_LINK_PROTO)\n"; - auto Args = R->getValueAsListOfDefs("Args"); + auto Args = R->getValueAsListOfConstDefs("Args"); Enumerate(R, N, [&OS, &Args](ArrayRef TS, const Twine &ID) { OS << "bool emit" << ID << "("; for (size_t I = 0, N = Args.size(); I < N; ++I) { @@ -268,7 +268,7 @@ void ClangOpcodesEmitter::EmitGroup(raw_ostream &OS, StringRef N, return; const auto *Types = R->getValueAsListInit("Types"); - const auto &Args = R->getValueAsListOfDefs("Args"); + const auto &Args = R->getValueAsListOfConstDefs("Args"); Twine EmitFuncName = "emit" + N; @@ -333,7 +333,7 @@ void ClangOpcodesEmitter::EmitGroup(raw_ostream &OS, StringRef N, // Print a switch statement selecting T. if (auto *TypeClass = dyn_cast(Types->getElement(I))) { OS << " switch (T" << I << ") {\n"; - auto Cases = TypeClass->getDef()->getValueAsListOfDefs("Types"); + auto Cases = TypeClass->getDef()->getValueAsListOfConstDefs("Types"); for (auto *Case : Cases) { OS << " case PT_" << Case->getName() << ":\n"; TS.push_back(Case); @@ -364,7 +364,7 @@ void ClangOpcodesEmitter::EmitEval(raw_ostream &OS, StringRef N, OS << "#ifdef GET_EVAL_IMPL\n"; Enumerate(R, N, [this, R, &N, &OS](ArrayRef TS, const Twine &ID) { - auto Args = R->getValueAsListOfDefs("Args"); + auto Args = R->getValueAsListOfConstDefs("Args"); OS << "bool EvalEmitter::emit" << ID << "("; for (size_t I = 0, N = Args.size(); I < N; ++I) {