diff options
author | Nicolai Haehnle <nhaehnle@gmail.com> | 2018-03-14 11:01:01 +0000 |
---|---|---|
committer | Nicolai Haehnle <nhaehnle@gmail.com> | 2018-03-14 11:01:01 +0000 |
commit | a511dddced88ccf9e42b39de1d1538e864728640 (patch) | |
tree | b009882d307c4ccf5b1d2bf7031d6d2353f3d253 | |
parent | aa9ca691cde9d650ec92049ca851a311baf6d15c (diff) | |
download | bcm5719-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.cpp | 12 |
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(); } } |