summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicolai Haehnle <nhaehnle@gmail.com>2018-03-14 11:01:01 +0000
committerNicolai Haehnle <nhaehnle@gmail.com>2018-03-14 11:01:01 +0000
commita511dddced88ccf9e42b39de1d1538e864728640 (patch)
treeb009882d307c4ccf5b1d2bf7031d6d2353f3d253
parentaa9ca691cde9d650ec92049ca851a311baf6d15c (diff)
downloadbcm5719-llvm-a511dddced88ccf9e42b39de1d1538e864728640.tar.gz
bcm5719-llvm-a511dddced88ccf9e42b39de1d1538e864728640.zip
TableGen: Explicitly forbid some nestings of class, multiclass, and foreach
These previously all failed one way or another, but now we produce a more helpful error message. Change-Id: I8ffd2e87c8e35a5134c3be289e0a1fecaa2bb8ca Differential revision: https://reviews.llvm.org/D44115 llvm-svn: 327497
-rw-r--r--llvm/lib/TableGen/TGParser.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/llvm/lib/TableGen/TGParser.cpp b/llvm/lib/TableGen/TGParser.cpp
index d7336231e6e..3bf99e943bc 100644
--- a/llvm/lib/TableGen/TGParser.cpp
+++ b/llvm/lib/TableGen/TGParser.cpp
@@ -3143,8 +3143,16 @@ bool TGParser::ParseObject(MultiClass *MC) {
if (MC)
return TokError("defset is not allowed inside multiclass");
return ParseDefset();
- case tgtok::Class: return ParseClass();
- case tgtok::MultiClass: return ParseMultiClass();
+ case tgtok::Class:
+ if (MC)
+ return TokError("class is not allowed inside multiclass");
+ if (!Loops.empty())
+ return TokError("class is not allowed inside foreach loop");
+ return ParseClass();
+ case tgtok::MultiClass:
+ if (!Loops.empty())
+ return TokError("multiclass is not allowed inside foreach loop");
+ return ParseMultiClass();
}
}
OpenPOWER on IntegriCloud