diff options
Diffstat (limited to 'lib/Target/X86/AsmParser/X86AsmParser.cpp')
-rw-r--r-- | lib/Target/X86/AsmParser/X86AsmParser.cpp | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/lib/Target/X86/AsmParser/X86AsmParser.cpp b/lib/Target/X86/AsmParser/X86AsmParser.cpp index acee68c54e..303a0f282a 100644 --- a/lib/Target/X86/AsmParser/X86AsmParser.cpp +++ b/lib/Target/X86/AsmParser/X86AsmParser.cpp @@ -979,16 +979,6 @@ ParseInstruction(StringRef Name, SMLoc NameLoc, NameLoc, NameLoc)); } - // lcall *x and ljmp *x -> lcalll and ljmpl - if ((Name == "lcall" || Name == "ljmp") && - Operands.size() == 3 && - static_cast<X86Operand*>(Operands[1])->isToken() && - static_cast<X86Operand*>(Operands[1])->getToken() == "*") { - delete Operands[0]; - Operands[0] = X86Operand::CreateToken(Name == "lcall" ? "lcalll" : "ljmpl", - NameLoc); - } - // jmp $42,$5 -> ljmp, similarly for call. if ((Name.startswith("call") || Name.startswith("jmp")) && Operands.size() == 3 && @@ -1007,9 +997,17 @@ ParseInstruction(StringRef Name, SMLoc NameLoc, if (NewOpName) { delete Operands[0]; Operands[0] = X86Operand::CreateToken(NewOpName, NameLoc); + Name = NewOpName; } } + // lcall and ljmp -> lcalll and ljmpl + if ((Name == "lcall" || Name == "ljmp") && Operands.size() == 3) { + delete Operands[0]; + Operands[0] = X86Operand::CreateToken(Name == "lcall" ? "lcalll" : "ljmpl", + NameLoc); + } + return false; } |