[llvm-commits] [llvm] r113165 - in /llvm/trunk: lib/Target/ARM/AsmParser/ARMAsmParser.cpp lib/Target/X86/AsmParser/X86AsmParser.cpp utils/TableGen/AsmMatcherEmitter.cpp
Chris Lattner
sabre at nondot.org
Mon Sep 6 12:22:17 PDT 2010
Author: lattner
Date: Mon Sep 6 14:22:17 2010
New Revision: 113165
URL: http://llvm.org/viewvc/llvm-project?rev=113165&view=rev
Log:
change MatchInstructionImpl to return an enum instead of bool.
Modified:
llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
llvm/trunk/lib/Target/X86/AsmParser/X86AsmParser.cpp
llvm/trunk/utils/TableGen/AsmMatcherEmitter.cpp
Modified: llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp?rev=113165&r1=113164&r2=113165&view=diff
==============================================================================
--- llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp (original)
+++ llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp Mon Sep 6 14:22:17 2010
@@ -83,7 +83,7 @@
bool MatchInstruction(SMLoc IDLoc,
const SmallVectorImpl<MCParsedAsmOperand*> &Operands,
MCInst &Inst) {
- if (!MatchInstructionImpl(Operands, Inst))
+ if (MatchInstructionImpl(Operands, Inst) == Match_Success)
return false;
// FIXME: We should give nicer diagnostics about the exact failure.
Modified: llvm/trunk/lib/Target/X86/AsmParser/X86AsmParser.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/AsmParser/X86AsmParser.cpp?rev=113165&r1=113164&r2=113165&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/AsmParser/X86AsmParser.cpp (original)
+++ llvm/trunk/lib/Target/X86/AsmParser/X86AsmParser.cpp Mon Sep 6 14:22:17 2010
@@ -881,7 +881,7 @@
assert(!Operands.empty() && "Unexpect empty operand list!");
// First, try a direct match.
- if (!MatchInstructionImpl(Operands, Inst))
+ if (MatchInstructionImpl(Operands, Inst) == Match_Success)
return false;
// FIXME: Ideally, we would only attempt suffix matches for things which are
@@ -901,13 +901,13 @@
// Check for the various suffix matches.
Tmp[Base.size()] = 'b';
- bool MatchB = MatchInstructionImpl(Operands, Inst);
+ bool MatchB = MatchInstructionImpl(Operands, Inst) != Match_Success;
Tmp[Base.size()] = 'w';
- bool MatchW = MatchInstructionImpl(Operands, Inst);
+ bool MatchW = MatchInstructionImpl(Operands, Inst) != Match_Success;
Tmp[Base.size()] = 'l';
- bool MatchL = MatchInstructionImpl(Operands, Inst);
+ bool MatchL = MatchInstructionImpl(Operands, Inst) != Match_Success;
Tmp[Base.size()] = 'q';
- bool MatchQ = MatchInstructionImpl(Operands, Inst);
+ bool MatchQ = MatchInstructionImpl(Operands, Inst) != Match_Success;
// Restore the old token.
Op->setTokenValue(Base);
Modified: llvm/trunk/utils/TableGen/AsmMatcherEmitter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/AsmMatcherEmitter.cpp?rev=113165&r1=113164&r2=113165&view=diff
==============================================================================
--- llvm/trunk/utils/TableGen/AsmMatcherEmitter.cpp (original)
+++ llvm/trunk/utils/TableGen/AsmMatcherEmitter.cpp Mon Sep 6 14:22:17 2010
@@ -1544,9 +1544,14 @@
// Information for the class declaration.
OS << "\n#ifdef GET_ASSEMBLER_HEADER\n";
OS << "#undef GET_ASSEMBLER_HEADER\n";
+ OS << " // This should be included into the middle of the declaration of \n";
+ OS << " // your subclasses implementation of TargetAsmParser.\n";
OS << " unsigned ComputeAvailableFeatures(const " <<
Target.getName() << "Subtarget *Subtarget) const;\n";
- OS << "bool MatchInstructionImpl(const SmallVectorImpl<MCParsedAsmOperand*>"
+ OS << " enum MatchResultTy {\n";
+ OS << " Match_Success, Match_Fail\n";
+ OS << " };\n";
+ OS << " MatchResultTy MatchInstructionImpl(const SmallVectorImpl<MCParsedAsmOperand*>"
<< " &Operands, MCInst &Inst);\n\n";
OS << "#endif // GET_ASSEMBLER_HEADER_INFO\n\n";
@@ -1594,7 +1599,8 @@
it != ie; ++it)
MaxNumOperands = std::max(MaxNumOperands, (*it)->Operands.size());
- OS << "bool " << Target.getName() << ClassName << "::\n"
+ OS << Target.getName() << ClassName << "::MatchResultTy "
+ << Target.getName() << ClassName << "::\n"
<< "MatchInstructionImpl(const SmallVectorImpl<MCParsedAsmOperand*>"
<< " &Operands,\n";
OS << " MCInst &Inst) {\n";
@@ -1653,7 +1659,7 @@
// Emit code to compute the class list for this operand vector.
OS << " // Eliminate obvious mismatches.\n";
OS << " if (Operands.size() > " << MaxNumOperands << ")\n";
- OS << " return true;\n\n";
+ OS << " return Match_Fail;\n\n";
OS << " // Compute the class list for this operand vector.\n";
OS << " MatchClassKind Classes[" << MaxNumOperands << "];\n";
@@ -1662,7 +1668,7 @@
OS << " // Check for invalid operands before matching.\n";
OS << " if (Classes[i] == InvalidMatchClass)\n";
- OS << " return true;\n";
+ OS << " return Match_Fail;\n";
OS << " }\n\n";
OS << " // Mark unused classes.\n";
@@ -1697,10 +1703,10 @@
if (!InsnCleanupFn.empty())
OS << " " << InsnCleanupFn << "(Inst);\n";
- OS << " return false;\n";
+ OS << " return Match_Success;\n";
OS << " }\n\n";
- OS << " return true;\n";
+ OS << " return Match_Fail;\n";
OS << "}\n\n";
OS << "#endif // GET_MATCHER_IMPLEMENTATION\n\n";
More information about the llvm-commits
mailing list