Skip to content

Commit d0da7de

Browse files
author
Thomas Symalla
committed
Reflect upstream const changes
`TableGenFnMain` was changed to pass a `const RecordKeeper &`, so reflect that change in `llvm-dialects`. Also, `const Record *` pointers are handed out now. Guard both versions with LLVM_MAIN_REVISION to ensure upstream and downstream CI continues to work.
1 parent bdfb113 commit d0da7de

File tree

16 files changed

+83
-68
lines changed

16 files changed

+83
-68
lines changed

include/llvm-dialects/TableGen/Common.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,15 @@
1717
#pragma once
1818

1919
#include "llvm/Support/raw_ostream.h"
20+
#include "llvm/TableGen/Record.h"
21+
22+
#if !defined(LLVM_MAIN_REVISION) || LLVM_MAIN_REVISION >= 513628
23+
using RecordKeeperTy = const llvm::RecordKeeper;
24+
using RecordTy = const llvm::Record;
25+
#else
26+
using RecordKeeperTy = llvm::RecordKeeper;
27+
using RecordTy = llvm::Record;
28+
#endif
2029

2130
namespace llvm_dialects {
2231

include/llvm-dialects/TableGen/Constraints.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
#pragma once
1818

19+
#include "llvm-dialects/TableGen/Common.h"
1920
#include "llvm-dialects/TableGen/NamedValue.h"
2021

2122
#include "llvm/ADT/ArrayRef.h"
@@ -220,9 +221,8 @@ class Attr : public MetaType {
220221
return type->getKind() == Kind::Attr;
221222
}
222223

223-
static std::unique_ptr<Attr> parse(llvm::raw_ostream &errs,
224-
GenDialectsContext &context,
225-
llvm::Record *record);
224+
static std::unique_ptr<Attr>
225+
parse(llvm::raw_ostream &errs, GenDialectsContext &context, RecordTy *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+
RecordTy *m_record = nullptr;
247247
std::string m_cppType;
248248
llvm::Init *m_llvmType = nullptr;
249249
std::string m_toLlvmValue;

include/llvm-dialects/TableGen/DialectType.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
#pragma once
1818

19+
#include "llvm-dialects/TableGen/Common.h"
1920
#include "llvm-dialects/TableGen/Predicates.h"
2021

2122
#include "llvm-dialects/TableGen/SymbolTable.h"
@@ -40,7 +41,7 @@ class DialectType : public BaseCppPredicate {
4041
return arguments().drop_front(1);
4142
}
4243

43-
llvm::Record *getDialectRec() const { return m_dialectRec; }
44+
RecordTy *getDialectRec() const { return m_dialectRec; }
4445
llvm::StringRef getName() const { return m_name; }
4546
llvm::StringRef getMnemonic() const { return m_mnemonic; }
4647
bool defaultGetterHasExplicitContextArgument() const {
@@ -58,7 +59,7 @@ class DialectType : public BaseCppPredicate {
5859
std::string name;
5960
};
6061

61-
llvm::Record *m_dialectRec = nullptr;
62+
RecordTy *m_dialectRec = nullptr;
6263
std::string m_name;
6364
std::string m_mnemonic;
6465
bool m_defaultGetterHasExplicitContextArgument = false;

include/llvm-dialects/TableGen/Dialects.h

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
#include <memory>
2020

21+
#include "llvm-dialects/TableGen/Common.h"
2122
#include "llvm/ADT/ArrayRef.h"
2223
#include "llvm/ADT/DenseMap.h"
2324
#include "llvm/ADT/DenseSet.h"
@@ -42,7 +43,7 @@ class Trait;
4243

4344
class GenDialect {
4445
public:
45-
llvm::Record *record;
46+
RecordTy *record;
4647
std::string cppName;
4748
std::string name;
4849
std::string cppNamespace;
@@ -69,14 +70,14 @@ class GenDialectsContext {
6970
GenDialectsContext();
7071
~GenDialectsContext();
7172

72-
void init(llvm::RecordKeeper &records,
73+
void init(RecordKeeperTy &records,
7374
const llvm::DenseSet<llvm::StringRef> &dialects);
7475

75-
Trait *getTrait(llvm::Record *traitRec);
76+
Trait *getTrait(RecordTy *traitRec);
7677
Predicate *getPredicate(llvm::Init *init, llvm::raw_ostream &errs);
77-
Attr *getAttr(llvm::Record *record, llvm::raw_ostream &errs);
78-
OpClass *getOpClass(llvm::Record *opClassRec);
79-
GenDialect *getDialect(llvm::Record *dialectRec);
78+
Attr *getAttr(RecordTy *record, llvm::raw_ostream &errs);
79+
OpClass *getOpClass(RecordTy *opClassRec);
80+
GenDialect *getDialect(RecordTy *dialectRec);
8081

8182
llvm::Init *getVoidTy() const { return m_voidTy; }
8283
llvm::Init *getAny() const { return m_any; }
@@ -92,11 +93,11 @@ class GenDialectsContext {
9293
llvm::Init *m_voidTy = nullptr;
9394
llvm::Init *m_any = nullptr;
9495
bool m_attrsComplete = false;
95-
llvm::DenseMap<llvm::Record *, std::unique_ptr<Trait>> m_traits;
96+
llvm::DenseMap<RecordTy *, std::unique_ptr<Trait>> m_traits;
9697
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;
98+
llvm::DenseMap<RecordTy *, std::unique_ptr<Attr>> m_attrs;
99+
llvm::DenseMap<RecordTy *, std::unique_ptr<OpClass>> m_opClasses;
100+
llvm::DenseMap<RecordTy *, std::unique_ptr<GenDialect>> m_dialects;
100101
};
101102

102103
} // namespace llvm_dialects

include/llvm-dialects/TableGen/GenDialect.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
#pragma once
1818

19+
#include "llvm-dialects/TableGen/Common.h"
1920
#include "llvm/Support/raw_ostream.h"
2021

2122
namespace llvm {
@@ -24,7 +25,7 @@ class RecordKeeper;
2425

2526
namespace llvm_dialects {
2627

27-
void genDialectDecls(llvm::raw_ostream& out, llvm::RecordKeeper& records);
28-
void genDialectDefs(llvm::raw_ostream& out, llvm::RecordKeeper& records);
28+
void genDialectDecls(llvm::raw_ostream &out, RecordKeeperTy &records);
29+
void genDialectDefs(llvm::raw_ostream &out, RecordKeeperTy &records);
2930

3031
} // namespace llvm_dialects

include/llvm-dialects/TableGen/Operations.h

Lines changed: 4 additions & 5 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+
RecordTy *record);
7171

7272
/// Records if this Operation has a variadic argument
7373
bool m_hasVariadicArgument = false;
@@ -91,9 +91,8 @@ class OpClass : public OperationBase {
9191
std::vector<OpClass *> subclasses;
9292
std::vector<Operation *> operations;
9393

94-
static std::unique_ptr<OpClass> parse(llvm::raw_ostream &errs,
95-
GenDialectsContext &context,
96-
llvm::Record *record);
94+
static std::unique_ptr<OpClass>
95+
parse(llvm::raw_ostream &errs, GenDialectsContext &context, RecordTy *record);
9796
};
9897

9998
class Operation : public OperationBase {
@@ -110,7 +109,7 @@ class Operation : public OperationBase {
110109
~Operation();
111110

112111
static bool parse(llvm::raw_ostream &errs, GenDialectsContext *context,
113-
GenDialect *dialect, llvm::Record *record);
112+
GenDialect *dialect, RecordTy *record);
114113

115114
bool haveResultOverloads() const { return m_haveResultOverloads; }
116115
bool haveArgumentOverloads() const { return m_haveArgumentOverloads; }

include/llvm-dialects/TableGen/Traits.h

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
#include <memory>
2121
#include <string>
2222

23+
#include "llvm-dialects/TableGen/Common.h"
2324
#include "llvm/ADT/StringRef.h"
2425

2526
namespace llvm {
@@ -42,22 +43,22 @@ class Trait {
4243
};
4344

4445
static std::unique_ptr<Trait> fromRecord(GenDialectsContext *context,
45-
llvm::Record *record);
46+
RecordTy *record);
4647

4748
virtual ~Trait() = default;
4849

49-
virtual void init(GenDialectsContext *context, llvm::Record *record);
50+
virtual void init(GenDialectsContext *context, RecordTy *record);
5051

5152
Kind getKind() const { return m_kind; }
52-
llvm::Record *getRecord() const { return m_record; }
53+
RecordTy *getRecord() const { return m_record; }
5354
llvm::StringRef getName() const;
5455

5556
protected:
5657
Trait(Kind kind) : m_kind(kind) {}
5758

5859
private:
5960
const Kind m_kind;
60-
llvm::Record *m_record = nullptr;
61+
RecordTy *m_record = nullptr;
6162
};
6263

6364
class LlvmAttributeTrait : public Trait {

lib/TableGen/Constraints.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ bool ConstraintSystem::addConstraint(raw_ostream &errs, Init *init,
9393
bool ConstraintSystem::addConstraintImpl(raw_ostream &errs, Init *init,
9494
Variable *self) {
9595
if (auto *dag = dyn_cast<DagInit>(init)) {
96-
Record *op = dag->getOperatorAsDef({});
96+
RecordTy *op = dag->getOperatorAsDef({});
9797

9898
auto isValidOperand = [&dag, &errs](size_t index,
9999
StringRef opName) -> bool {
@@ -385,8 +385,8 @@ StringRef MetaType::getName() const {
385385
return "value";
386386
}
387387

388-
std::unique_ptr<Attr> Attr::parse(raw_ostream &errs,
389-
GenDialectsContext &context, Record *record) {
388+
std::unique_ptr<Attr>
389+
Attr::parse(raw_ostream &errs, GenDialectsContext &context, RecordTy *record) {
390390
if (!record->isSubClassOf("Attr")) {
391391
errs << record->getName() << ": must be a subclass of Attr\n";
392392
return {};

lib/TableGen/DialectType.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ bool DialectType::init(raw_ostream &errs, GenDialectsContext &context,
3030
if (!BaseCppPredicate::init(errs, context, theInit))
3131
return false;
3232

33-
Record *record = cast<DefInit>(theInit)->getDef();
33+
RecordTy *record = cast<DefInit>(theInit)->getDef();
3434

3535
m_dialectRec = record->getValueAsDef("dialect");
3636
if (!m_dialectRec->isSubClassOf("Dialect")) {

lib/TableGen/Dialects.cpp

Lines changed: 11 additions & 12 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(RecordTy *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'");
@@ -113,8 +113,7 @@ Predicate *GenDialectsContext::getPredicateImpl(Init *init, raw_ostream &errs) {
113113
return op;
114114
}
115115

116-
Attr *GenDialectsContext::getAttr(llvm::Record *record,
117-
llvm::raw_ostream &errs) {
116+
Attr *GenDialectsContext::getAttr(RecordTy *record, llvm::raw_ostream &errs) {
118117
auto it = m_attrs.find(record);
119118
if (it == m_attrs.end()) {
120119
errs << " not an attribute: " << record->getName() << '\n';
@@ -126,7 +125,7 @@ Attr *GenDialectsContext::getAttr(llvm::Record *record,
126125
return attr;
127126
}
128127

129-
GenDialect *GenDialectsContext::getDialect(Record *dialectRec) {
128+
GenDialect *GenDialectsContext::getDialect(RecordTy *dialectRec) {
130129
if (!dialectRec->isSubClassOf("Dialect"))
131130
report_fatal_error(Twine("Trying to use '") + dialectRec->getName() +
132131
"' as a dialect, but it is not a subclass of 'Dialect'");
@@ -140,7 +139,7 @@ GenDialect *GenDialectsContext::getDialect(Record *dialectRec) {
140139
return it->second.get();
141140
}
142141

143-
OpClass *GenDialectsContext::getOpClass(Record *opClassRec) {
142+
OpClass *GenDialectsContext::getOpClass(RecordTy *opClassRec) {
144143
if (opClassRec->getName() == "NoSuperClass")
145144
return nullptr;
146145

@@ -172,17 +171,17 @@ OpClass *GenDialectsContext::getOpClass(Record *opClassRec) {
172171
return opClass;
173172
}
174173

175-
void GenDialectsContext::init(RecordKeeper &records,
174+
void GenDialectsContext::init(RecordKeeperTy &records,
176175
const DenseSet<StringRef> &dialects) {
177-
for (Record *record : records.getAllDerivedDefinitions("Attr")) {
176+
for (RecordTy *record : records.getAllDerivedDefinitions("Attr")) {
178177
auto owner = Attr::parse(llvm::errs(), *this, record);
179178
if (!record)
180179
report_fatal_error(Twine("Error parsing Attr ") + record->getName());
181180

182181
m_attrs.try_emplace(record, std::move(owner));
183182
}
184183

185-
for (Record *record : records.getAllDerivedDefinitions("AttrLlvmType")) {
184+
for (RecordTy *record : records.getAllDerivedDefinitions("AttrLlvmType")) {
186185
Attr *attr = getAttr(record->getValueAsDef("attr"), llvm::errs());
187186
assert(attr);
188187
attr->setLlvmType(record->getValueInit("llvmType"));
@@ -193,7 +192,7 @@ void GenDialectsContext::init(RecordKeeper &records,
193192
m_any = records.getDef("any")->getDefInit();
194193
assert(m_voidTy && m_any);
195194

196-
for (Record *dialectRec : records.getAllDerivedDefinitions("Dialect")) {
195+
for (RecordTy *dialectRec : records.getAllDerivedDefinitions("Dialect")) {
197196
auto name = dialectRec->getValueAsString("name");
198197
if (!dialects.contains(name))
199198
continue;
@@ -206,7 +205,7 @@ void GenDialectsContext::init(RecordKeeper &records,
206205
m_dialects.insert(std::make_pair(dialectRec, std::move(dialect)));
207206
}
208207

209-
for (Record *typeRec : records.getAllDerivedDefinitions("DialectType")) {
208+
for (RecordTy *typeRec : records.getAllDerivedDefinitions("DialectType")) {
210209
auto *dialectType =
211210
cast<DialectType>(getPredicate(typeRec->getDefInit(), llvm::errs()));
212211
if (!dialectType) {
@@ -218,8 +217,8 @@ void GenDialectsContext::init(RecordKeeper &records,
218217
dialectIt->second->types.push_back(dialectType);
219218
}
220219

221-
for (Record *opRec : records.getAllDerivedDefinitions("Op")) {
222-
Record *dialectRec = opRec->getValueAsDef("dialect");
220+
for (RecordTy *opRec : records.getAllDerivedDefinitions("Op")) {
221+
RecordTy *dialectRec = opRec->getValueAsDef("dialect");
223222
auto dialectIt = m_dialects.find(dialectRec);
224223
if (dialectIt == m_dialects.end())
225224
continue;

lib/TableGen/GenDialect.cpp

Lines changed: 4 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(RecordKeeperTy &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 (RecordTy *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,7 @@ 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, RecordKeeperTy &records) {
6565
auto [context, dialect] = getSelectedDialect(records);
6666

6767
emitHeader(out);
@@ -218,7 +218,7 @@ class Builder;
218218
)";
219219
}
220220

221-
void llvm_dialects::genDialectDefs(raw_ostream& out, RecordKeeper& records) {
221+
void llvm_dialects::genDialectDefs(raw_ostream &out, RecordKeeperTy &records) {
222222
auto [contextPtr, dialect] = getSelectedDialect(records);
223223
auto &genDialectsContext = *contextPtr;
224224

lib/TableGen/NamedValue.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ NamedValue::parseList(raw_ostream &errs, GenDialectsContext &context,
5757
bool accepted = false;
5858

5959
if (auto *defInit = dyn_cast<DefInit>(valueInit)) {
60-
Record *def = defInit->getDef();
60+
RecordTy *def = defInit->getDef();
6161

6262
if (def->getName() == "type") {
6363
if (mode == Parser::OperationResults ||

0 commit comments

Comments
 (0)