[llvm] 1e43975 - [TableGen][NFC] Remove MultiClass argument and Scoper in QualifyName (#69297)
via llvm-commits
llvm-commits at lists.llvm.org
Sun Oct 22 20:22:19 PDT 2023
Author: Wang Pengcheng
Date: 2023-10-23T11:22:15+08:00
New Revision: 1e43975652e542d6bf500735e102a2ba7c364fb7
URL: https://github.com/llvm/llvm-project/commit/1e43975652e542d6bf500735e102a2ba7c364fb7
DIFF: https://github.com/llvm/llvm-project/commit/1e43975652e542d6bf500735e102a2ba7c364fb7.diff
LOG: [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.
Added:
Modified:
llvm/lib/TableGen/TGParser.cpp
Removed:
################################################################################
diff --git a/llvm/lib/TableGen/TGParser.cpp b/llvm/lib/TableGen/TGParser.cpp
index 7d8f91cf1222a6d..16854c7d1f05ab2 100644
--- a/llvm/lib/TableGen/TGParser.cpp
+++ b/llvm/lib/TableGen/TGParser.cpp
@@ -111,11 +111,10 @@ static void checkConcrete(Record &R) {
/// Return an Init with a qualifier prefix referring
/// to CurRec's name.
-static Init *QualifyName(Record &CurRec, MultiClass *CurMultiClass, Init *Name,
- StringRef Scoper) {
+static Init *QualifyName(Record &CurRec, Init *Name, bool IsMC = false) {
RecordKeeper &RK = CurRec.getRecords();
- Init *NewName = BinOpInit::getStrConcat(CurRec.getNameInit(),
- StringInit::get(RK, Scoper));
+ Init *NewName = BinOpInit::getStrConcat(
+ CurRec.getNameInit(), StringInit::get(RK, IsMC ? "::" : ":"));
NewName = BinOpInit::getStrConcat(NewName, Name);
if (BinOpInit *BinOp = dyn_cast<BinOpInit>(NewName))
@@ -123,18 +122,20 @@ static Init *QualifyName(Record &CurRec, MultiClass *CurMultiClass, Init *Name,
return NewName;
}
+static Init *QualifyName(MultiClass *MC, Init *Name) {
+ return QualifyName(MC->Rec, Name, /*IsMC=*/true);
+}
+
/// Return the qualified version of the implicit 'NAME' template argument.
-static Init *QualifiedNameOfImplicitName(Record &Rec,
- MultiClass *MC = nullptr) {
- return QualifyName(Rec, MC, StringInit::get(Rec.getRecords(), "NAME"),
- MC ? "::" : ":");
+static Init *QualifiedNameOfImplicitName(Record &Rec, bool IsMC = false) {
+ return QualifyName(Rec, StringInit::get(Rec.getRecords(), "NAME"), IsMC);
}
static Init *QualifiedNameOfImplicitName(MultiClass *MC) {
- return QualifiedNameOfImplicitName(MC->Rec, MC);
+ return QualifiedNameOfImplicitName(MC->Rec, /*IsMC=*/true);
}
-Init *TGVarScope::getVar(RecordKeeper &Records, MultiClass* ParsingMultiClass,
+Init *TGVarScope::getVar(RecordKeeper &Records, MultiClass *ParsingMultiClass,
StringInit *Name, SMRange NameLoc,
bool TrackReferenceLocs) const {
// First, we search in local variables.
@@ -142,11 +143,11 @@ Init *TGVarScope::getVar(RecordKeeper &Records, MultiClass* ParsingMultiClass,
if (It != Vars.end())
return It->second;
- std::function<Init *(Record *, StringInit *, StringRef)> FindValueInArgs =
- [&](Record *Rec, StringInit *Name, StringRef Scoper) -> Init * {
+ auto FindValueInArgs = [&](Record *Rec, StringInit *Name,
+ bool IsMC) -> Init * {
if (!Rec)
return nullptr;
- Init *ArgName = QualifyName(*Rec, ParsingMultiClass, Name, Scoper);
+ Init *ArgName = QualifyName(*Rec, Name, IsMC);
if (Rec->isTemplateArg(ArgName)) {
RecordVal *RV = Rec->getValue(ArgName);
assert(RV && "Template arg doesn't exist??");
@@ -176,7 +177,7 @@ Init *TGVarScope::getVar(RecordKeeper &Records, MultiClass* ParsingMultiClass,
// The variable is a class template argument?
if (CurRec->isClass())
- if (auto *V = FindValueInArgs(CurRec, Name, ":"))
+ if (auto *V = FindValueInArgs(CurRec, Name, /*IsMC=*/false))
return V;
}
break;
@@ -193,7 +194,7 @@ Init *TGVarScope::getVar(RecordKeeper &Records, MultiClass* ParsingMultiClass,
case SK_MultiClass: {
// The variable is a multiclass template argument?
if (CurMultiClass)
- if (auto *V = FindValueInArgs(&CurMultiClass->Rec, Name, "::"))
+ if (auto *V = FindValueInArgs(&CurMultiClass->Rec, Name, /*IsMC=*/true))
return V;
break;
}
@@ -3191,8 +3192,7 @@ bool TGParser::ParseTemplateArgValueList(
"The name of named argument should be a valid identifier");
auto *Name = cast<StringInit>(Value);
- Init *QualifiedName =
- QualifyName(*ArgsRec, CurMultiClass, Name, IsDefm ? "::" : ":");
+ Init *QualifiedName = QualifyName(*ArgsRec, Name, /*IsMC=*/IsDefm);
auto *NamedArg = ArgsRec->getValue(QualifiedName);
if (!NamedArg)
return Error(ValueLoc,
@@ -3271,17 +3271,17 @@ Init *TGParser::ParseDeclaration(Record *CurRec,
RecordVal(DeclName, IdLoc, Type,
HasField ? RecordVal::FK_NonconcreteOK
: RecordVal::FK_Normal));
-
} else if (CurRec) { // class template argument
- DeclName = QualifyName(*CurRec, CurMultiClass, DeclName, ":");
- BadField = AddValue(CurRec, IdLoc, RecordVal(DeclName, IdLoc, Type,
- RecordVal::FK_TemplateArg));
-
+ DeclName = QualifyName(*CurRec, DeclName);
+ BadField =
+ AddValue(CurRec, IdLoc,
+ RecordVal(DeclName, IdLoc, Type, RecordVal::FK_TemplateArg));
} else { // multiclass template argument
assert(CurMultiClass && "invalid context for template argument");
- DeclName = QualifyName(CurMultiClass->Rec, CurMultiClass, DeclName, "::");
- BadField = AddValue(CurRec, IdLoc, RecordVal(DeclName, IdLoc, Type,
- RecordVal::FK_TemplateArg));
+ DeclName = QualifyName(CurMultiClass, DeclName);
+ BadField =
+ AddValue(CurRec, IdLoc,
+ RecordVal(DeclName, IdLoc, Type, RecordVal::FK_TemplateArg));
}
if (BadField)
return nullptr;
More information about the llvm-commits
mailing list