diff options
author | Daniel Dunbar <daniel@zuster.org> | 2009-08-11 05:00:25 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2009-08-11 05:00:25 +0000 |
commit | 7695367a901dc99e809538f6e374dd101f5518fe (patch) | |
tree | 6004ccced6d4a2e032c7b1653186882d9bcabdbb | |
parent | 1bd253a3a6b018b8bd60e322842adf791f3dc499 (diff) | |
download | external_llvm-7695367a901dc99e809538f6e374dd101f5518fe.zip external_llvm-7695367a901dc99e809538f6e374dd101f5518fe.tar.gz external_llvm-7695367a901dc99e809538f6e374dd101f5518fe.tar.bz2 |
llvm-mc/X86: Parse '*' correctly (in the way the matcher expects).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78642 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Target/X86/AsmParser/X86AsmParser.cpp | 18 | ||||
-rw-r--r-- | test/MC/AsmParser/x86_instructions.s | 3 |
2 files changed, 10 insertions, 11 deletions
diff --git a/lib/Target/X86/AsmParser/X86AsmParser.cpp b/lib/Target/X86/AsmParser/X86AsmParser.cpp index c3e292e..4643211 100644 --- a/lib/Target/X86/AsmParser/X86AsmParser.cpp +++ b/lib/Target/X86/AsmParser/X86AsmParser.cpp @@ -263,17 +263,6 @@ bool X86ATTAsmParser::ParseOperand(X86Operand &Op) { Op = X86Operand::CreateImm(Val); return false; } - case AsmToken::Star: - getLexer().Lex(); // Eat the star. - - if (getLexer().is(AsmToken::Register)) { - if (ParseRegister(Op)) - return true; - } else if (ParseMemOperand(Op)) - return true; - - // FIXME: Note the '*' in the operand for use by the matcher. - return false; } } @@ -406,6 +395,13 @@ bool X86ATTAsmParser::ParseInstruction(const StringRef &Name, MCInst &Inst) { SMLoc Loc = getLexer().getTok().getLoc(); if (getLexer().isNot(AsmToken::EndOfStatement)) { + + // Parse '*' modifier. + if (getLexer().is(AsmToken::Star)) { + getLexer().Lex(); // Eat the star. + Operands.push_back(X86Operand::CreateToken("*")); + } + // Read the first operand. Operands.push_back(X86Operand()); if (ParseOperand(Operands.back())) diff --git a/test/MC/AsmParser/x86_instructions.s b/test/MC/AsmParser/x86_instructions.s index 436e2e0..0d3367a 100644 --- a/test/MC/AsmParser/x86_instructions.s +++ b/test/MC/AsmParser/x86_instructions.s @@ -49,3 +49,6 @@ // RUN: grep {MCInst(opcode=.*, operands=.reg:21, reg:0, reg:19.)} %t subl %eax, %ebx +// FIXME: Check that this matches the correct instruction. +// RUN: grep {MCInst(opcode=.*, operands=.reg:80.)} %t + call *%rax |