aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2010-10-30 19:47:49 +0000
committerChris Lattner <sabre@nondot.org>2010-10-30 19:47:49 +0000
commit8cf8bcc40c977713e51fb85fb9f24a0ecfbde24b (patch)
treef770ed84c61823a5d1aaacdd171f8a59cddf3de7
parent0f899c78e18e39a8ccd08386aaa493a1b9a712a3 (diff)
fix typos and some serious bugs in feature handling (but not for
cases that are currently exercised). Thanks to Frits van Bommel for the great review! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@117840 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--docs/CodeGenerator.html2
-rw-r--r--utils/TableGen/AsmMatcherEmitter.cpp10
2 files changed, 8 insertions, 4 deletions
diff --git a/docs/CodeGenerator.html b/docs/CodeGenerator.html
index 60d54e507b..0a77617825 100644
--- a/docs/CodeGenerator.html
+++ b/docs/CodeGenerator.html
@@ -1909,7 +1909,7 @@ description.</p>
<div class="doc_text">
-<p>The first phase of alias processing is simple instruction mneomonic
+<p>The first phase of alias processing is simple instruction mnemonic
remapping for classes of instructions which are allowed with two different
mnemonics. This phase is a simple and unconditionally remapping from one input
mnemonic to one output mnemonic. It isn't possible for this form of alias to
diff --git a/utils/TableGen/AsmMatcherEmitter.cpp b/utils/TableGen/AsmMatcherEmitter.cpp
index 999c137109..80f5e0841a 100644
--- a/utils/TableGen/AsmMatcherEmitter.cpp
+++ b/utils/TableGen/AsmMatcherEmitter.cpp
@@ -1571,21 +1571,25 @@ static bool EmitMnemonicAliases(raw_ostream &OS) {
// We can't have two aliases from the same mnemonic with no predicate.
PrintError(ToVec[AliasWithNoPredicate]->getLoc(),
"two MnemonicAliases with the same 'from' mnemonic!");
- PrintError(R->getLoc(), "this is the other MnemonicAliases.");
- throw std::string("ERROR: Invalid MnemonicAliases definitions!");
+ PrintError(R->getLoc(), "this is the other MnemonicAlias.");
+ throw std::string("ERROR: Invalid MnemonicAlias definitions!");
}
AliasWithNoPredicate = i;
continue;
}
+ if (!MatchCode.empty())
+ MatchCode += "else ";
MatchCode += "if ((Features & " + FeatureMask + ") == "+FeatureMask+")\n";
MatchCode += " Mnemonic = \"" +R->getValueAsString("ToMnemonic")+"\";\n";
}
if (AliasWithNoPredicate != -1) {
Record *R = ToVec[AliasWithNoPredicate];
- MatchCode += "Mnemonic = \"" + R->getValueAsString("ToMnemonic") + "\";";
+ if (!MatchCode.empty())
+ MatchCode += "else\n ";
+ MatchCode += "Mnemonic = \"" + R->getValueAsString("ToMnemonic")+"\";\n";
}
MatchCode += "return;";