summaryrefslogtreecommitdiffstats
path: root/llvm/tools
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/tools')
-rw-r--r--llvm/tools/llvm-mc/AsmParser.cpp4
-rw-r--r--llvm/tools/llvm-mc/AsmParser.h12
-rw-r--r--llvm/tools/llvm-mc/llvm-mc.cpp5
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();
}
OpenPOWER on IntegriCloud