tblgen/AsmMatcherEmitter: Fix alias handling to honor -match-prefix.
authorDaniel Dunbar <daniel@zuster.org>
Mon, 24 Jan 2011 23:26:31 +0000 (23:26 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Mon, 24 Jan 2011 23:26:31 +0000 (23:26 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124154 91177308-0d34-0410-b5e6-96231b3b80d8

utils/TableGen/AsmMatcherEmitter.cpp

index 082b1c5f3e9b8a3f70fca85bd8093e36789e6cda..a2c5de3e1e6dc8c27178159cf6d770ab09ee462f 100644 (file)
@@ -1090,6 +1090,13 @@ void AsmMatcherInfo::BuildInfo() {
   for (unsigned i = 0, e = AllInstAliases.size(); i != e; ++i) {
     CodeGenInstAlias *Alias = new CodeGenInstAlias(AllInstAliases[i], Target);
 
+    // If the tblgen -match-prefix option is specified (for tblgen hackers),
+    // filter the set of instruction aliases we consider, based on the target
+    // instruction.
+    if (!StringRef(Alias->ResultInst->TheDef->getName()).startswith(
+          MatchPrefix))
+      continue;
+
     OwningPtr<MatchableInfo> II(new MatchableInfo(Alias));
     
     II->Initialize(*this, SingletonRegisters);
@@ -1708,6 +1715,10 @@ static std::string GetAliasRequiredFeatures(Record *R,
 /// EmitMnemonicAliases - If the target has any MnemonicAlias<> definitions,
 /// emit a function for them and return true, otherwise return false.
 static bool EmitMnemonicAliases(raw_ostream &OS, const AsmMatcherInfo &Info) {
+  // Ignore aliases when match-prefix is set.
+  if (!MatchPrefix.empty())
+    return false;
+
   std::vector<Record*> Aliases =
     Info.getRecords().getAllDerivedDefinitions("MnemonicAlias");
   if (Aliases.empty()) return false;