Skip to content

Commit 2bb3621

Browse files
authored
[LLVM][TableGen] Change DecoderEmitter to use const RecordKeeper (#109040)
Change DecoderEmitter to use const RecordKeeper. 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
1 parent 40c45b6 commit 2bb3621

File tree

1 file changed

+14
-14
lines changed

1 file changed

+14
-14
lines changed

llvm/utils/TableGen/DecoderEmitter.cpp

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -155,12 +155,12 @@ raw_ostream &operator<<(raw_ostream &OS, const EncodingAndInst &Value) {
155155
}
156156

157157
class DecoderEmitter {
158-
RecordKeeper &RK;
158+
const RecordKeeper &RK;
159159
std::vector<EncodingAndInst> NumberedEncodings;
160160

161161
public:
162-
DecoderEmitter(RecordKeeper &R, std::string PredicateNamespace)
163-
: RK(R), Target(R), PredicateNamespace(std::move(PredicateNamespace)) {}
162+
DecoderEmitter(const RecordKeeper &R, const std::string &PredicateNamespace)
163+
: RK(R), Target(R), PredicateNamespace(PredicateNamespace) {}
164164

165165
// Emit the decoder state machine table.
166166
void emitTable(formatted_raw_ostream &o, DecoderTable &Table,
@@ -181,7 +181,7 @@ class DecoderEmitter {
181181
CodeGenTarget Target;
182182

183183
public:
184-
std::string PredicateNamespace;
184+
const std::string &PredicateNamespace;
185185
};
186186

187187
} // end anonymous namespace
@@ -1302,7 +1302,7 @@ bool FilterChooser::emitPredicateMatch(raw_ostream &o, unsigned &Indentation,
13021302
AllInstructions[Opc].EncodingDef->getValueAsListInit("Predicates");
13031303
bool IsFirstEmission = true;
13041304
for (unsigned i = 0; i < Predicates->size(); ++i) {
1305-
Record *Pred = Predicates->getElementAsRecord(i);
1305+
const Record *Pred = Predicates->getElementAsRecord(i);
13061306
if (!Pred->getValue("AssemblerMatcherPredicate"))
13071307
continue;
13081308

@@ -1320,10 +1320,10 @@ bool FilterChooser::emitPredicateMatch(raw_ostream &o, unsigned &Indentation,
13201320
}
13211321

13221322
bool FilterChooser::doesOpcodeNeedPredicate(unsigned Opc) const {
1323-
ListInit *Predicates =
1323+
const ListInit *Predicates =
13241324
AllInstructions[Opc].EncodingDef->getValueAsListInit("Predicates");
13251325
for (unsigned i = 0; i < Predicates->size(); ++i) {
1326-
Record *Pred = Predicates->getElementAsRecord(i);
1326+
const Record *Pred = Predicates->getElementAsRecord(i);
13271327
if (!Pred->getValue("AssemblerMatcherPredicate"))
13281328
continue;
13291329

@@ -1868,7 +1868,7 @@ static std::string findOperandDecoderMethod(const Record *Record) {
18681868
std::string Decoder;
18691869

18701870
const RecordVal *DecoderString = Record->getValue("DecoderMethod");
1871-
StringInit *String =
1871+
const StringInit *String =
18721872
DecoderString ? dyn_cast<StringInit>(DecoderString->getValue()) : nullptr;
18731873
if (String) {
18741874
Decoder = std::string(String->getValue());
@@ -2010,7 +2010,7 @@ static void addOneOperandFields(const Record &EncodingDef, const BitsInit &Bits,
20102010
}
20112011

20122012
static unsigned
2013-
populateInstruction(CodeGenTarget &Target, const Record &EncodingDef,
2013+
populateInstruction(const CodeGenTarget &Target, const Record &EncodingDef,
20142014
const CodeGenInstruction &CGI, unsigned Opc,
20152015
std::map<unsigned, std::vector<OperandInfo>> &Operands,
20162016
bool IsVarLenInst) {
@@ -2089,12 +2089,12 @@ populateInstruction(CodeGenTarget &Target, const Record &EncodingDef,
20892089
DagInit *SubArgDag = dyn_cast<DagInit>(OpInit);
20902090
if (SubArgDag)
20912091
OpInit = SubArgDag->getOperator();
2092-
Record *OpTypeRec = cast<DefInit>(OpInit)->getDef();
2092+
const Record *OpTypeRec = cast<DefInit>(OpInit)->getDef();
20932093
// Lookup the sub-operands from the operand type record (note that only
20942094
// Operand subclasses have MIOperandInfo, see CodeGenInstruction.cpp).
2095-
DagInit *SubOps = OpTypeRec->isSubClassOf("Operand")
2096-
? OpTypeRec->getValueAsDag("MIOperandInfo")
2097-
: nullptr;
2095+
const DagInit *SubOps = OpTypeRec->isSubClassOf("Operand")
2096+
? OpTypeRec->getValueAsDag("MIOperandInfo")
2097+
: nullptr;
20982098

20992099
// Lookup the decoder method and construct a new OperandInfo to hold our
21002100
// result.
@@ -2549,7 +2549,7 @@ namespace llvm {
25492549
handleHwModesUnrelatedEncodings(NumberedInstruction, HwModeNames,
25502550
NamespacesWithHwModes, NumberedEncodings);
25512551
}
2552-
for (const auto &NumberedAlias :
2552+
for (const Record *NumberedAlias :
25532553
RK.getAllDerivedDefinitions("AdditionalEncoding"))
25542554
NumberedEncodings.emplace_back(
25552555
NumberedAlias,

0 commit comments

Comments
 (0)