diff options
Diffstat (limited to 'llvm/tools')
| -rw-r--r-- | llvm/tools/llvm-mc/AsmParser.cpp | 4 | ||||
| -rw-r--r-- | llvm/tools/llvm-mc/AsmParser.h | 12 | ||||
| -rw-r--r-- | llvm/tools/llvm-mc/llvm-mc.cpp | 5 |
3 files changed, 15 insertions, 6 deletions
diff --git a/llvm/tools/llvm-mc/AsmParser.cpp b/llvm/tools/llvm-mc/AsmParser.cpp index 4629cfc34b9..066879ff48d 100644 --- a/llvm/tools/llvm-mc/AsmParser.cpp +++ b/llvm/tools/llvm-mc/AsmParser.cpp @@ -20,6 +20,7 @@ #include "llvm/MC/MCSymbol.h" #include "llvm/Support/SourceMgr.h" #include "llvm/Support/raw_ostream.h" +#include "llvm/Target/TargetAsmParser.h" using namespace llvm; void AsmParser::Warning(SMLoc L, const char *Msg) { @@ -548,7 +549,8 @@ bool AsmParser::ParseStatement() { } MCInst Inst; - if (ParseX86InstOperands(IDVal, Inst)) + if (ParseX86InstOperands(IDVal, Inst) && + getTargetParser().ParseInstruction(*this, IDVal, Inst)) return true; if (Lexer.isNot(asmtok::EndOfStatement)) diff --git a/llvm/tools/llvm-mc/AsmParser.h b/llvm/tools/llvm-mc/AsmParser.h index 62aa4ef44c0..b9967585080 100644 --- a/llvm/tools/llvm-mc/AsmParser.h +++ b/llvm/tools/llvm-mc/AsmParser.h @@ -15,6 +15,7 @@ #define ASMPARSER_H #include "AsmLexer.h" +#include "llvm/MC/MCAsmParser.h" #include "llvm/MC/MCStreamer.h" namespace llvm { @@ -24,7 +25,7 @@ class MCInst; class MCStreamer; class MCValue; -class AsmParser { +class AsmParser : MCAsmParser { public: struct X86Operand; @@ -32,14 +33,19 @@ private: AsmLexer Lexer; MCContext &Ctx; MCStreamer &Out; + TargetAsmParser &TargetParser; public: - AsmParser(SourceMgr &SM, MCContext &ctx, MCStreamer &OutStr) - : Lexer(SM), Ctx(ctx), Out(OutStr) {} + AsmParser(SourceMgr &_SM, MCContext &_Ctx, MCStreamer &_Out, + TargetAsmParser &_TargetParser) + : Lexer(_SM), Ctx(_Ctx), Out(_Out), TargetParser(_TargetParser) {} ~AsmParser() {} bool Run(); +public: + TargetAsmParser &getTargetParser() const { return TargetParser; } + private: bool ParseStatement(); diff --git a/llvm/tools/llvm-mc/llvm-mc.cpp b/llvm/tools/llvm-mc/llvm-mc.cpp index 6855a830e8a..ffc9b559f07 100644 --- a/llvm/tools/llvm-mc/llvm-mc.cpp +++ b/llvm/tools/llvm-mc/llvm-mc.cpp @@ -186,9 +186,10 @@ static int AssembleInput(const char *ProgName) { OwningPtr<MCStreamer> Str(createAsmStreamer(Ctx, outs())); // FIXME: Target hook & command line option for initial section. - Str.get()->SwitchSection(Ctx.GetSection("__TEXT,__text,regular,pure_instructions")); + Str.get()->SwitchSection(Ctx.GetSection("__TEXT,__text," + "regular,pure_instructions")); - AsmParser Parser(SrcMgr, Ctx, *Str.get()); + AsmParser Parser(SrcMgr, Ctx, *Str.get(), *TAP); return Parser.Run(); } |

