From 749372ba242354d783b20937d22868f4e6e83955 Mon Sep 17 00:00:00 2001 From: Rahul Joshi Date: Mon, 3 Feb 2025 20:04:31 -0800 Subject: [PATCH] [NFC][TableGen] Code cleanup in CodeGenTarget.cpp (#125569) - Use StringRef::str() instead of std::string(StringRef). - Use const pointers for `Candidates` in getSuperRegForSubReg(). - Make `AsmParserCat` and `AsmWriterCat` static. - Use enumerate() in `ComputeInstrsByEnum` to assign inst enums. - Use range-based for loops. --- llvm/utils/TableGen/Common/CodeGenTarget.cpp | 32 ++++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/llvm/utils/TableGen/Common/CodeGenTarget.cpp b/llvm/utils/TableGen/Common/CodeGenTarget.cpp index 96829a185a30b7a..fb9bb15feab3cf4 100644 --- a/llvm/utils/TableGen/Common/CodeGenTarget.cpp +++ b/llvm/utils/TableGen/Common/CodeGenTarget.cpp @@ -28,8 +28,8 @@ #include using namespace llvm; -cl::OptionCategory AsmParserCat("Options for -gen-asm-parser"); -cl::OptionCategory AsmWriterCat("Options for -gen-asm-writer"); +static cl::OptionCategory AsmParserCat("Options for -gen-asm-parser"); +static cl::OptionCategory AsmWriterCat("Options for -gen-asm-writer"); static cl::opt AsmParserNum("asmparsernum", cl::init(0), @@ -64,9 +64,9 @@ StringRef llvm::getEnumName(MVT::SimpleValueType T) { std::string llvm::getQualifiedName(const Record *R) { std::string Namespace; if (R->getValue("Namespace")) - Namespace = std::string(R->getValueAsString("Namespace")); + Namespace = R->getValueAsString("Namespace").str(); if (Namespace.empty()) - return std::string(R->getName()); + return R->getName().str(); return Namespace + "::" + R->getName().str(); } @@ -166,14 +166,15 @@ CodeGenRegBank &CodeGenTarget::getRegBank() const { const CodeGenRegisterClass *CodeGenTarget::getSuperRegForSubReg( const ValueTypeByHwMode &ValueTy, CodeGenRegBank &RegBank, const CodeGenSubRegIndex *SubIdx, bool MustBeAllocatable) const { - std::vector Candidates; + std::vector Candidates; auto &RegClasses = RegBank.getRegClasses(); // Try to find a register class which supports ValueTy, and also contains // SubIdx. - for (CodeGenRegisterClass &RC : RegClasses) { + for (const CodeGenRegisterClass &RC : RegClasses) { // Is there a subclass of this class which contains this subregister index? - CodeGenRegisterClass *SubClassWithSubReg = RC.getSubClassWithSubReg(SubIdx); + const CodeGenRegisterClass *SubClassWithSubReg = + RC.getSubClassWithSubReg(SubIdx); if (!SubClassWithSubReg) continue; @@ -268,32 +269,32 @@ void CodeGenTarget::ReadInstructions() const { } static const CodeGenInstruction *GetInstByName( - const char *Name, + StringRef Name, const DenseMap> &Insts, const RecordKeeper &Records) { const Record *Rec = Records.getDef(Name); const auto I = Insts.find(Rec); if (!Rec || I == Insts.end()) - PrintFatalError(Twine("Could not find '") + Name + "' instruction!"); + PrintFatalError("Could not find '" + Name + "' instruction!"); return I->second.get(); } static const char *FixedInstrs[] = { #define HANDLE_TARGET_OPCODE(OPC) #OPC, #include "llvm/Support/TargetOpcodes.def" - nullptr}; +}; unsigned CodeGenTarget::getNumFixedInstructions() { - return std::size(FixedInstrs) - 1; + return std::size(FixedInstrs); } /// Return all of the instructions defined by the target, ordered by /// their enum value. void CodeGenTarget::ComputeInstrsByEnum() const { const auto &Insts = getInstructions(); - for (const char *const *p = FixedInstrs; *p; ++p) { - const CodeGenInstruction *Instr = GetInstByName(*p, Insts, Records); + for (const char *Name : FixedInstrs) { + const CodeGenInstruction *Instr = GetInstByName(Name, Insts, Records); assert(Instr && "Missing target independent instruction"); assert(Instr->Namespace == "TargetOpcode" && "Bad namespace"); InstrsByEnum.push_back(Instr); @@ -324,9 +325,8 @@ void CodeGenTarget::ComputeInstrsByEnum() const { }); // Assign an enum value to each instruction according to the sorted order. - unsigned Num = 0; - for (const CodeGenInstruction *Inst : InstrsByEnum) - Inst->EnumVal = Num++; + for (const auto &[Idx, Inst] : enumerate(InstrsByEnum)) + Inst->EnumVal = Idx; } /// isLittleEndianEncoding - Return whether this target encodes its instruction