Skip to content

Commit 4990dd2

Browse files
author
Thomas Symalla
committed
Make Record * members const
`TableGenFnMain` was changed to pass a `const RecordKeeper &`, so reflect that change in ´llvm-dialects`
1 parent bdfb113 commit 4990dd2

File tree

11 files changed

+55
-47
lines changed

11 files changed

+55
-47
lines changed

include/llvm-dialects/TableGen/Constraints.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ class Attr : public MetaType {
222222

223223
static std::unique_ptr<Attr> parse(llvm::raw_ostream &errs,
224224
GenDialectsContext &context,
225-
llvm::Record *record);
225+
const llvm::Record *record);
226226

227227
llvm::StringRef getName() const;
228228
llvm::StringRef getCppType() const { return m_cppType; }
@@ -243,7 +243,7 @@ class Attr : public MetaType {
243243
}
244244

245245
private:
246-
llvm::Record *m_record = nullptr;
246+
const llvm::Record *m_record = nullptr;
247247
std::string m_cppType;
248248
llvm::Init *m_llvmType = nullptr;
249249
std::string m_toLlvmValue;

include/llvm-dialects/TableGen/Dialects.h

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ class Trait;
4242

4343
class GenDialect {
4444
public:
45-
llvm::Record *record;
45+
const llvm::Record *record;
4646
std::string cppName;
4747
std::string name;
4848
std::string cppNamespace;
@@ -69,14 +69,14 @@ class GenDialectsContext {
6969
GenDialectsContext();
7070
~GenDialectsContext();
7171

72-
void init(llvm::RecordKeeper &records,
72+
void init(const llvm::RecordKeeper &records,
7373
const llvm::DenseSet<llvm::StringRef> &dialects);
7474

75-
Trait *getTrait(llvm::Record *traitRec);
75+
Trait *getTrait(const llvm::Record *traitRec);
7676
Predicate *getPredicate(llvm::Init *init, llvm::raw_ostream &errs);
7777
Attr *getAttr(llvm::Record *record, llvm::raw_ostream &errs);
78-
OpClass *getOpClass(llvm::Record *opClassRec);
79-
GenDialect *getDialect(llvm::Record *dialectRec);
78+
OpClass *getOpClass(const llvm::Record *opClassRec);
79+
GenDialect *getDialect(const llvm::Record *dialectRec);
8080

8181
llvm::Init *getVoidTy() const { return m_voidTy; }
8282
llvm::Init *getAny() const { return m_any; }
@@ -92,11 +92,11 @@ class GenDialectsContext {
9292
llvm::Init *m_voidTy = nullptr;
9393
llvm::Init *m_any = nullptr;
9494
bool m_attrsComplete = false;
95-
llvm::DenseMap<llvm::Record *, std::unique_ptr<Trait>> m_traits;
95+
llvm::DenseMap<const llvm::Record *, std::unique_ptr<Trait>> m_traits;
9696
llvm::DenseMap<llvm::Init *, std::unique_ptr<Predicate>> m_predicates;
97-
llvm::DenseMap<llvm::Record *, std::unique_ptr<Attr>> m_attrs;
98-
llvm::DenseMap<llvm::Record *, std::unique_ptr<OpClass>> m_opClasses;
99-
llvm::DenseMap<llvm::Record *, std::unique_ptr<GenDialect>> m_dialects;
97+
llvm::DenseMap<const llvm::Record *, std::unique_ptr<Attr>> m_attrs;
98+
llvm::DenseMap<const llvm::Record *, std::unique_ptr<OpClass>> m_opClasses;
99+
llvm::DenseMap<const llvm::Record *, std::unique_ptr<GenDialect>> m_dialects;
100100
};
101101

102102
} // namespace llvm_dialects

include/llvm-dialects/TableGen/GenDialect.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ class RecordKeeper;
2424

2525
namespace llvm_dialects {
2626

27-
void genDialectDecls(llvm::raw_ostream& out, llvm::RecordKeeper& records);
28-
void genDialectDefs(llvm::raw_ostream& out, llvm::RecordKeeper& records);
27+
void genDialectDecls(llvm::raw_ostream &out, const llvm::RecordKeeper &records);
28+
void genDialectDefs(llvm::raw_ostream &out, const llvm::RecordKeeper &records);
2929

3030
} // namespace llvm_dialects

include/llvm-dialects/TableGen/Operations.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ class OperationBase {
6767

6868
protected:
6969
bool init(llvm::raw_ostream &errs, GenDialectsContext &context,
70-
llvm::Record *record);
70+
const llvm::Record *record);
7171

7272
/// Records if this Operation has a variadic argument
7373
bool m_hasVariadicArgument = false;
@@ -93,7 +93,7 @@ class OpClass : public OperationBase {
9393

9494
static std::unique_ptr<OpClass> parse(llvm::raw_ostream &errs,
9595
GenDialectsContext &context,
96-
llvm::Record *record);
96+
const llvm::Record *record);
9797
};
9898

9999
class Operation : public OperationBase {
@@ -110,7 +110,7 @@ class Operation : public OperationBase {
110110
~Operation();
111111

112112
static bool parse(llvm::raw_ostream &errs, GenDialectsContext *context,
113-
GenDialect *dialect, llvm::Record *record);
113+
GenDialect *dialect, const llvm::Record *record);
114114

115115
bool haveResultOverloads() const { return m_haveResultOverloads; }
116116
bool haveArgumentOverloads() const { return m_haveArgumentOverloads; }

include/llvm-dialects/TableGen/Traits.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,22 +42,22 @@ class Trait {
4242
};
4343

4444
static std::unique_ptr<Trait> fromRecord(GenDialectsContext *context,
45-
llvm::Record *record);
45+
const llvm::Record *record);
4646

4747
virtual ~Trait() = default;
4848

49-
virtual void init(GenDialectsContext *context, llvm::Record *record);
49+
virtual void init(GenDialectsContext *context, const llvm::Record *record);
5050

5151
Kind getKind() const { return m_kind; }
52-
llvm::Record *getRecord() const { return m_record; }
52+
const llvm::Record *getRecord() const { return m_record; }
5353
llvm::StringRef getName() const;
5454

5555
protected:
5656
Trait(Kind kind) : m_kind(kind) {}
5757

5858
private:
5959
const Kind m_kind;
60-
llvm::Record *m_record = nullptr;
60+
const llvm::Record *m_record = nullptr;
6161
};
6262

6363
class LlvmAttributeTrait : public Trait {

lib/TableGen/Constraints.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -386,7 +386,8 @@ StringRef MetaType::getName() const {
386386
}
387387

388388
std::unique_ptr<Attr> Attr::parse(raw_ostream &errs,
389-
GenDialectsContext &context, Record *record) {
389+
GenDialectsContext &context,
390+
const Record *record) {
390391
if (!record->isSubClassOf("Attr")) {
391392
errs << record->getName() << ": must be a subclass of Attr\n";
392393
return {};

lib/TableGen/Dialects.cpp

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ void GenDialect::finalize(raw_ostream &errs) {
7777
GenDialectsContext::GenDialectsContext() = default;
7878
GenDialectsContext::~GenDialectsContext() = default;
7979

80-
Trait *GenDialectsContext::getTrait(Record *traitRec) {
80+
Trait *GenDialectsContext::getTrait(const Record *traitRec) {
8181
if (!traitRec->isSubClassOf("Trait"))
8282
report_fatal_error(Twine("Trying to use '") + traitRec->getName() +
8383
"' as a trait, but it is not a subclass of 'Trait'");
@@ -126,7 +126,7 @@ Attr *GenDialectsContext::getAttr(llvm::Record *record,
126126
return attr;
127127
}
128128

129-
GenDialect *GenDialectsContext::getDialect(Record *dialectRec) {
129+
GenDialect *GenDialectsContext::getDialect(const Record *dialectRec) {
130130
if (!dialectRec->isSubClassOf("Dialect"))
131131
report_fatal_error(Twine("Trying to use '") + dialectRec->getName() +
132132
"' as a dialect, but it is not a subclass of 'Dialect'");
@@ -140,7 +140,7 @@ GenDialect *GenDialectsContext::getDialect(Record *dialectRec) {
140140
return it->second.get();
141141
}
142142

143-
OpClass *GenDialectsContext::getOpClass(Record *opClassRec) {
143+
OpClass *GenDialectsContext::getOpClass(const Record *opClassRec) {
144144
if (opClassRec->getName() == "NoSuperClass")
145145
return nullptr;
146146

@@ -172,17 +172,18 @@ OpClass *GenDialectsContext::getOpClass(Record *opClassRec) {
172172
return opClass;
173173
}
174174

175-
void GenDialectsContext::init(RecordKeeper &records,
175+
void GenDialectsContext::init(const RecordKeeper &records,
176176
const DenseSet<StringRef> &dialects) {
177-
for (Record *record : records.getAllDerivedDefinitions("Attr")) {
177+
for (const Record *record : records.getAllDerivedDefinitions("Attr")) {
178178
auto owner = Attr::parse(llvm::errs(), *this, record);
179179
if (!record)
180180
report_fatal_error(Twine("Error parsing Attr ") + record->getName());
181181

182182
m_attrs.try_emplace(record, std::move(owner));
183183
}
184184

185-
for (Record *record : records.getAllDerivedDefinitions("AttrLlvmType")) {
185+
for (const Record *record :
186+
records.getAllDerivedDefinitions("AttrLlvmType")) {
186187
Attr *attr = getAttr(record->getValueAsDef("attr"), llvm::errs());
187188
assert(attr);
188189
attr->setLlvmType(record->getValueInit("llvmType"));
@@ -193,7 +194,7 @@ void GenDialectsContext::init(RecordKeeper &records,
193194
m_any = records.getDef("any")->getDefInit();
194195
assert(m_voidTy && m_any);
195196

196-
for (Record *dialectRec : records.getAllDerivedDefinitions("Dialect")) {
197+
for (const Record *dialectRec : records.getAllDerivedDefinitions("Dialect")) {
197198
auto name = dialectRec->getValueAsString("name");
198199
if (!dialects.contains(name))
199200
continue;
@@ -206,7 +207,8 @@ void GenDialectsContext::init(RecordKeeper &records,
206207
m_dialects.insert(std::make_pair(dialectRec, std::move(dialect)));
207208
}
208209

209-
for (Record *typeRec : records.getAllDerivedDefinitions("DialectType")) {
210+
for (const Record *typeRec :
211+
records.getAllDerivedDefinitions("DialectType")) {
210212
auto *dialectType =
211213
cast<DialectType>(getPredicate(typeRec->getDefInit(), llvm::errs()));
212214
if (!dialectType) {
@@ -218,7 +220,7 @@ void GenDialectsContext::init(RecordKeeper &records,
218220
dialectIt->second->types.push_back(dialectType);
219221
}
220222

221-
for (Record *opRec : records.getAllDerivedDefinitions("Op")) {
223+
for (const Record *opRec : records.getAllDerivedDefinitions("Op")) {
222224
Record *dialectRec = opRec->getValueAsDef("dialect");
223225
auto dialectIt = m_dialects.find(dialectRec);
224226
if (dialectIt == m_dialects.end())

lib/TableGen/GenDialect.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ cl::opt<std::string> g_dialect("dialect", cl::desc("the dialect to generate"), c
4141
} // anonymous namespace
4242

4343
static std::pair<std::unique_ptr<GenDialectsContext>, GenDialect *>
44-
getSelectedDialect(RecordKeeper &records) {
44+
getSelectedDialect(const RecordKeeper &records) {
4545
if (g_dialect.empty())
4646
report_fatal_error(Twine("Must select a dialect using the --dialect option"));
4747

@@ -51,7 +51,7 @@ getSelectedDialect(RecordKeeper &records) {
5151

5252
context->init(records, dialects);
5353

54-
for (Record* dialectRec : records.getAllDerivedDefinitions("Dialect")) {
54+
for (const Record *dialectRec : records.getAllDerivedDefinitions("Dialect")) {
5555
if (dialectRec->getValueAsString("name") == g_dialect) {
5656
GenDialect *selectedDialect = context->getDialect(dialectRec);
5757
return {std::move(context), selectedDialect};
@@ -61,7 +61,8 @@ getSelectedDialect(RecordKeeper &records) {
6161
report_fatal_error(Twine("Could not find dialect. Check the '--dialect' option."));
6262
}
6363

64-
void llvm_dialects::genDialectDecls(raw_ostream& out, RecordKeeper& records) {
64+
void llvm_dialects::genDialectDecls(raw_ostream &out,
65+
const RecordKeeper &records) {
6566
auto [context, dialect] = getSelectedDialect(records);
6667

6768
emitHeader(out);
@@ -218,7 +219,8 @@ class Builder;
218219
)";
219220
}
220221

221-
void llvm_dialects::genDialectDefs(raw_ostream& out, RecordKeeper& records) {
222+
void llvm_dialects::genDialectDefs(raw_ostream &out,
223+
const RecordKeeper &records) {
222224
auto [contextPtr, dialect] = getSelectedDialect(records);
223225
auto &genDialectsContext = *contextPtr;
224226

lib/TableGen/Operations.cpp

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@ static std::string evaluateAttrLlvmType(raw_ostream &errs, raw_ostream &out,
3232
SymbolTable &symbols);
3333

3434
static std::optional<std::vector<NamedValue>>
35-
parseArguments(raw_ostream &errs, GenDialectsContext &context, Record *rec) {
35+
parseArguments(raw_ostream &errs, GenDialectsContext &context,
36+
const Record *rec) {
3637
Record *superClassRec = rec->getValueAsDef("superclass");
3738
OpClass *superclass = context.getOpClass(superClassRec);
3839
DagInit *argsInit = rec->getValueAsDag("arguments");
@@ -78,7 +79,7 @@ class AccessorBuilder final {
7879
} // namespace
7980

8081
bool OperationBase::init(raw_ostream &errs, GenDialectsContext &context,
81-
Record *record) {
82+
const Record *record) {
8283
m_dialect = context.getDialect(record->getValueAsDef("dialect"));
8384
m_superclass = context.getOpClass(record->getValueAsDef("superclass"));
8485

@@ -280,8 +281,9 @@ void OperationBase::emitArgumentAccessorDefinitions(llvm::raw_ostream &out,
280281
}
281282
}
282283

283-
std::unique_ptr<OpClass>
284-
OpClass::parse(raw_ostream &errs, GenDialectsContext &context, Record *record) {
284+
std::unique_ptr<OpClass> OpClass::parse(raw_ostream &errs,
285+
GenDialectsContext &context,
286+
const Record *record) {
285287
auto opClass = std::make_unique<OpClass>();
286288
opClass->name = record->getName();
287289

@@ -329,7 +331,7 @@ Operation::Operation(GenDialectsContext &context) : m_system(context, m_scope) {
329331
Operation::~Operation() = default;
330332

331333
bool Operation::parse(raw_ostream &errs, GenDialectsContext *context,
332-
GenDialect *dialect, Record *record) {
334+
GenDialect *dialect, const Record *record) {
333335
auto op = std::make_unique<Operation>(*context);
334336

335337
if (!op->init(errs, *context, record))
@@ -342,7 +344,7 @@ bool Operation::parse(raw_ostream &errs, GenDialectsContext *context,
342344

343345
op->name = record->getName();
344346
op->mnemonic = record->getValueAsString("mnemonic");
345-
for (Record *traitRec : record->getValueAsListOfDefs("traits"))
347+
for (const Record *traitRec : record->getValueAsListOfDefs("traits"))
346348
op->traits.push_back(context->getTrait(traitRec));
347349

348350
EvaluationPlanner evaluation(op->m_system);

lib/TableGen/Traits.cpp

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ class LlvmEnumAttributeTrait : public LlvmAttributeTrait {
3535
public:
3636
LlvmEnumAttributeTrait() : LlvmAttributeTrait(Kind::LlvmEnumAttributeTrait) {}
3737

38-
void init(GenDialectsContext *context, llvm::Record *record) override;
38+
void init(GenDialectsContext *context, const llvm::Record *record) override;
3939

4040
void addAttribute(llvm::raw_ostream &out, FmtContext &fmt) const override;
4141

@@ -54,7 +54,7 @@ class LlvmMemoryAttributeTrait : public LlvmAttributeTrait {
5454
LlvmMemoryAttributeTrait()
5555
: LlvmAttributeTrait(Kind::LlvmMemoryAttributeTrait) {}
5656

57-
void init(GenDialectsContext *context, llvm::Record *record) override;
57+
void init(GenDialectsContext *context, const llvm::Record *record) override;
5858

5959
void addAttribute(llvm::raw_ostream &out, FmtContext &fmt) const override;
6060

@@ -80,7 +80,7 @@ bool llvm_dialects::noMemoryEffects() {
8080
}
8181

8282
std::unique_ptr<Trait> Trait::fromRecord(GenDialectsContext *context,
83-
llvm::Record *traitRec) {
83+
const llvm::Record *traitRec) {
8484
std::unique_ptr<Trait> result;
8585
if (traitRec->isSubClassOf("LlvmEnumAttributeTrait")) {
8686
result = std::make_unique<LlvmEnumAttributeTrait>();
@@ -93,13 +93,14 @@ std::unique_ptr<Trait> Trait::fromRecord(GenDialectsContext *context,
9393
return result;
9494
}
9595

96-
void Trait::init(GenDialectsContext *context, Record *record) {
96+
void Trait::init(GenDialectsContext *context, const Record *record) {
9797
m_record = record;
9898
}
9999

100100
StringRef Trait::getName() const { return m_record->getName(); }
101101

102-
void LlvmEnumAttributeTrait::init(GenDialectsContext *context, Record *record) {
102+
void LlvmEnumAttributeTrait::init(GenDialectsContext *context,
103+
const Record *record) {
103104
LlvmAttributeTrait::init(context, record);
104105
m_llvmEnum = record->getValueAsString("llvmEnum");
105106
}
@@ -111,7 +112,7 @@ void LlvmEnumAttributeTrait::addAttribute(raw_ostream &out,
111112
}
112113

113114
void LlvmMemoryAttributeTrait::init(GenDialectsContext *context,
114-
llvm::Record *record) {
115+
const llvm::Record *record) {
115116
LlvmAttributeTrait::init(context, record);
116117

117118
auto *effects = record->getValueAsListInit("effects");

utils/llvm-dialects-tblgen.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ cl::opt<Action> g_action(
5353
"Generate dialect definitions (.cpp.inc)")
5454
));
5555

56-
bool llvmDialectsTableGenMain(raw_ostream& out, RecordKeeper& records) {
56+
bool llvmDialectsTableGenMain(raw_ostream &out, const RecordKeeper &records) {
5757
switch (g_action) {
5858
case Action::PrintRecords:
5959
// Redundant with llvm-tblgen, but may be convenient for users.

0 commit comments

Comments
 (0)