diff options
| author | Daniel Dunbar <daniel@zuster.org> | 2011-02-04 23:17:40 +0000 |
|---|---|---|
| committer | Daniel Dunbar <daniel@zuster.org> | 2011-02-04 23:17:40 +0000 |
| commit | 191524e8a54852aef50441a8e7dacc67a0c08ac0 (patch) | |
| tree | 55c6e1a929a91bda6da6d95884cd8f1d15eb2eca /llvm/utils/TableGen/AsmMatcherEmitter.cpp | |
| parent | e8ac8e93a1472596706b965922852bb3f56eaccc (diff) | |
| download | bcm5719-llvm-191524e8a54852aef50441a8e7dacc67a0c08ac0.tar.gz bcm5719-llvm-191524e8a54852aef50441a8e7dacc67a0c08ac0.zip | |
MC/AsmMatcher: Sink ConvertToMCInst into the TargetAsmParser instance, which
implicitly allows custom conversions to be member functions.
llvm-svn: 124908
Diffstat (limited to 'llvm/utils/TableGen/AsmMatcherEmitter.cpp')
| -rw-r--r-- | llvm/utils/TableGen/AsmMatcherEmitter.cpp | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/llvm/utils/TableGen/AsmMatcherEmitter.cpp b/llvm/utils/TableGen/AsmMatcherEmitter.cpp index 95da8afe26c..c3f2411fe03 100644 --- a/llvm/utils/TableGen/AsmMatcherEmitter.cpp +++ b/llvm/utils/TableGen/AsmMatcherEmitter.cpp @@ -1356,7 +1356,7 @@ void MatchableInfo::BuildAliasResultOperands() { } } -static void EmitConvertToMCInst(CodeGenTarget &Target, +static void EmitConvertToMCInst(CodeGenTarget &Target, StringRef ClassName, std::vector<MatchableInfo*> &Infos, raw_ostream &OS) { // Write the convert function to a separate stream, so we can drop it after @@ -1368,7 +1368,8 @@ static void EmitConvertToMCInst(CodeGenTarget &Target, std::set<std::string> GeneratedFns; // Start the unified conversion function. - CvtOS << "static bool ConvertToMCInst(ConversionKind Kind, MCInst &Inst, " + CvtOS << "bool " << Target.getName() << ClassName << "::\n"; + CvtOS << "ConvertToMCInst(unsigned Kind, MCInst &Inst, " << "unsigned Opcode,\n" << " const SmallVectorImpl<MCParsedAsmOperand*" << "> &Operands) {\n"; @@ -1921,6 +1922,10 @@ void AsmMatcherEmitter::run(raw_ostream &OS) { OS << " Match_MnemonicFail,\n"; OS << " Match_Success\n"; OS << " };\n"; + OS << " bool ConvertToMCInst(unsigned Kind, MCInst &Inst, " + << "unsigned Opcode,\n" + << " const SmallVectorImpl<MCParsedAsmOperand*> " + << "&Operands);\n"; OS << " bool MnemonicIsValid(StringRef Mnemonic);\n"; OS << " MatchResultTy MatchInstructionImpl(\n"; OS << " const SmallVectorImpl<MCParsedAsmOperand*> &Operands,\n"; @@ -1946,7 +1951,7 @@ void AsmMatcherEmitter::run(raw_ostream &OS) { bool HasMnemonicAliases = EmitMnemonicAliases(OS, Info); // Generate the unified function to convert operands into an MCInst. - EmitConvertToMCInst(Target, Info.Matchables, OS); + EmitConvertToMCInst(Target, ClassName, Info.Matchables, OS); // Emit the enumeration for classes which participate in matching. EmitMatchClassEnumeration(Target, Info.Classes, OS); |

