aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/TableGen/TGParser.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/TableGen/TGParser.cpp')
-rw-r--r--llvm/lib/TableGen/TGParser.cpp13
1 files changed, 11 insertions, 2 deletions
diff --git a/llvm/lib/TableGen/TGParser.cpp b/llvm/lib/TableGen/TGParser.cpp
index ed7963031b24..6ccca4d69f40 100644
--- a/llvm/lib/TableGen/TGParser.cpp
+++ b/llvm/lib/TableGen/TGParser.cpp
@@ -874,8 +874,9 @@ Init *TGParser::ParseIDValue(Record *CurRec, StringInit *Name, SMLoc NameLoc,
Record *TemplateRec = CurMultiClass ? &CurMultiClass->Rec : CurRec;
if (TemplateRec->isTemplateArg(TemplateArgName)) {
- const RecordVal *RV = TemplateRec->getValue(TemplateArgName);
+ RecordVal *RV = TemplateRec->getValue(TemplateArgName);
assert(RV && "Template arg doesn't exist??");
+ RV->setUsed(true);
return VarInit::get(TemplateArgName, RV->getType());
} else if (Name->getValue() == "NAME") {
return VarInit::get(TemplateArgName, StringRecTy::get());
@@ -3346,7 +3347,12 @@ bool TGParser::ParseClass() {
if (ParseTemplateArgList(CurRec))
return true;
- return ParseObjectBody(CurRec);
+ if (ParseObjectBody(CurRec))
+ return true;
+
+ if (!NoWarnOnUnusedTemplateArgs)
+ CurRec->checkUnusedTemplateArgs();
+ return false;
}
/// ParseLetList - Parse a non-empty list of assignment expressions into a list
@@ -3541,6 +3547,9 @@ bool TGParser::ParseMultiClass() {
PopLocalScope(MulticlassScope);
}
+ if (!NoWarnOnUnusedTemplateArgs)
+ CurMultiClass->Rec.checkUnusedTemplateArgs();
+
CurMultiClass = nullptr;
return false;
}