Skip to content

Commit 1e43975

Browse files
authored
[TableGen][NFC] Remove MultiClass argument and Scoper in QualifyName (#69297)
MultiClass argument is not used any more since aa84326. Besides, for maintainability, we should put the implementation of qualifying name in one place (that is `QualifyName` function), so `Scoper` is removed and we use `IsMC` to indicate that we are in a multiclass.
1 parent 05b5188 commit 1e43975

File tree

1 file changed

+25
-25
lines changed

1 file changed

+25
-25
lines changed

llvm/lib/TableGen/TGParser.cpp

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -111,42 +111,43 @@ static void checkConcrete(Record &R) {
111111

112112
/// Return an Init with a qualifier prefix referring
113113
/// to CurRec's name.
114-
static Init *QualifyName(Record &CurRec, MultiClass *CurMultiClass, Init *Name,
115-
StringRef Scoper) {
114+
static Init *QualifyName(Record &CurRec, Init *Name, bool IsMC = false) {
116115
RecordKeeper &RK = CurRec.getRecords();
117-
Init *NewName = BinOpInit::getStrConcat(CurRec.getNameInit(),
118-
StringInit::get(RK, Scoper));
116+
Init *NewName = BinOpInit::getStrConcat(
117+
CurRec.getNameInit(), StringInit::get(RK, IsMC ? "::" : ":"));
119118
NewName = BinOpInit::getStrConcat(NewName, Name);
120119

121120
if (BinOpInit *BinOp = dyn_cast<BinOpInit>(NewName))
122121
NewName = BinOp->Fold(&CurRec);
123122
return NewName;
124123
}
125124

125+
static Init *QualifyName(MultiClass *MC, Init *Name) {
126+
return QualifyName(MC->Rec, Name, /*IsMC=*/true);
127+
}
128+
126129
/// Return the qualified version of the implicit 'NAME' template argument.
127-
static Init *QualifiedNameOfImplicitName(Record &Rec,
128-
MultiClass *MC = nullptr) {
129-
return QualifyName(Rec, MC, StringInit::get(Rec.getRecords(), "NAME"),
130-
MC ? "::" : ":");
130+
static Init *QualifiedNameOfImplicitName(Record &Rec, bool IsMC = false) {
131+
return QualifyName(Rec, StringInit::get(Rec.getRecords(), "NAME"), IsMC);
131132
}
132133

133134
static Init *QualifiedNameOfImplicitName(MultiClass *MC) {
134-
return QualifiedNameOfImplicitName(MC->Rec, MC);
135+
return QualifiedNameOfImplicitName(MC->Rec, /*IsMC=*/true);
135136
}
136137

137-
Init *TGVarScope::getVar(RecordKeeper &Records, MultiClass* ParsingMultiClass,
138+
Init *TGVarScope::getVar(RecordKeeper &Records, MultiClass *ParsingMultiClass,
138139
StringInit *Name, SMRange NameLoc,
139140
bool TrackReferenceLocs) const {
140141
// First, we search in local variables.
141142
auto It = Vars.find(Name->getValue());
142143
if (It != Vars.end())
143144
return It->second;
144145

145-
std::function<Init *(Record *, StringInit *, StringRef)> FindValueInArgs =
146-
[&](Record *Rec, StringInit *Name, StringRef Scoper) -> Init * {
146+
auto FindValueInArgs = [&](Record *Rec, StringInit *Name,
147+
bool IsMC) -> Init * {
147148
if (!Rec)
148149
return nullptr;
149-
Init *ArgName = QualifyName(*Rec, ParsingMultiClass, Name, Scoper);
150+
Init *ArgName = QualifyName(*Rec, Name, IsMC);
150151
if (Rec->isTemplateArg(ArgName)) {
151152
RecordVal *RV = Rec->getValue(ArgName);
152153
assert(RV && "Template arg doesn't exist??");
@@ -176,7 +177,7 @@ Init *TGVarScope::getVar(RecordKeeper &Records, MultiClass* ParsingMultiClass,
176177

177178
// The variable is a class template argument?
178179
if (CurRec->isClass())
179-
if (auto *V = FindValueInArgs(CurRec, Name, ":"))
180+
if (auto *V = FindValueInArgs(CurRec, Name, /*IsMC=*/false))
180181
return V;
181182
}
182183
break;
@@ -193,7 +194,7 @@ Init *TGVarScope::getVar(RecordKeeper &Records, MultiClass* ParsingMultiClass,
193194
case SK_MultiClass: {
194195
// The variable is a multiclass template argument?
195196
if (CurMultiClass)
196-
if (auto *V = FindValueInArgs(&CurMultiClass->Rec, Name, "::"))
197+
if (auto *V = FindValueInArgs(&CurMultiClass->Rec, Name, /*IsMC=*/true))
197198
return V;
198199
break;
199200
}
@@ -3191,8 +3192,7 @@ bool TGParser::ParseTemplateArgValueList(
31913192
"The name of named argument should be a valid identifier");
31923193

31933194
auto *Name = cast<StringInit>(Value);
3194-
Init *QualifiedName =
3195-
QualifyName(*ArgsRec, CurMultiClass, Name, IsDefm ? "::" : ":");
3195+
Init *QualifiedName = QualifyName(*ArgsRec, Name, /*IsMC=*/IsDefm);
31963196
auto *NamedArg = ArgsRec->getValue(QualifiedName);
31973197
if (!NamedArg)
31983198
return Error(ValueLoc,
@@ -3271,17 +3271,17 @@ Init *TGParser::ParseDeclaration(Record *CurRec,
32713271
RecordVal(DeclName, IdLoc, Type,
32723272
HasField ? RecordVal::FK_NonconcreteOK
32733273
: RecordVal::FK_Normal));
3274-
32753274
} else if (CurRec) { // class template argument
3276-
DeclName = QualifyName(*CurRec, CurMultiClass, DeclName, ":");
3277-
BadField = AddValue(CurRec, IdLoc, RecordVal(DeclName, IdLoc, Type,
3278-
RecordVal::FK_TemplateArg));
3279-
3275+
DeclName = QualifyName(*CurRec, DeclName);
3276+
BadField =
3277+
AddValue(CurRec, IdLoc,
3278+
RecordVal(DeclName, IdLoc, Type, RecordVal::FK_TemplateArg));
32803279
} else { // multiclass template argument
32813280
assert(CurMultiClass && "invalid context for template argument");
3282-
DeclName = QualifyName(CurMultiClass->Rec, CurMultiClass, DeclName, "::");
3283-
BadField = AddValue(CurRec, IdLoc, RecordVal(DeclName, IdLoc, Type,
3284-
RecordVal::FK_TemplateArg));
3281+
DeclName = QualifyName(CurMultiClass, DeclName);
3282+
BadField =
3283+
AddValue(CurRec, IdLoc,
3284+
RecordVal(DeclName, IdLoc, Type, RecordVal::FK_TemplateArg));
32853285
}
32863286
if (BadField)
32873287
return nullptr;

0 commit comments

Comments
 (0)