summaryrefslogtreecommitdiff
path: root/utils
diff options
context:
space:
mode:
authorDaniel Sanders <daniel_l_sanders@apple.com>2017-11-01 22:13:05 +0000
committerDaniel Sanders <daniel_l_sanders@apple.com>2017-11-01 22:13:05 +0000
commit8ec459f49ce4ce0c172481b5be879d293ac941b8 (patch)
tree6dffb4049a7d0ffd1f7d1d9d06988658da473a95 /utils
parentd005962cad83b1821e318d6506351e9cadde2942 (diff)
[globalisel][regbank] Warn about MIR ambiguities when register bank/class names clash.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@317132 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils')
-rw-r--r--utils/TableGen/RegisterBankEmitter.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/utils/TableGen/RegisterBankEmitter.cpp b/utils/TableGen/RegisterBankEmitter.cpp
index 293933ffb8d..5c647168804 100644
--- a/utils/TableGen/RegisterBankEmitter.cpp
+++ b/utils/TableGen/RegisterBankEmitter.cpp
@@ -299,6 +299,19 @@ void RegisterBankEmitter::run(raw_ostream &OS) {
Banks.push_back(Bank);
}
+ // Warn about ambiguous MIR caused by register bank/class name clashes.
+ for (const auto &Class : Records.getAllDerivedDefinitions("RegisterClass")) {
+ for (const auto &Bank : Banks) {
+ if (Bank.getName().lower() == Class->getName().lower()) {
+ PrintWarning(Bank.getDef().getLoc(), "Register bank names should be "
+ "distinct from register classes "
+ "to avoid ambiguous MIR");
+ PrintNote(Bank.getDef().getLoc(), "RegisterBank was declared here");
+ PrintNote(Class->getLoc(), "RegisterClass was declared here");
+ }
+ }
+ }
+
emitSourceFileHeader("Register Bank Source Fragments", OS);
OS << "#ifdef GET_REGBANK_DECLARATIONS\n"
<< "#undef GET_REGBANK_DECLARATIONS\n";