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!

llvm-svn: 117840
This commit is contained in:
Chris Lattner 2010-10-30 19:47:49 +00:00
parent aac142cc06
commit f9ec2fb34a
2 changed files with 8 additions and 4 deletions

View File

@ -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

View File

@ -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;";