diff options
author | Chris Lattner <sabre@nondot.org> | 2010-09-22 04:04:03 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2010-09-22 04:04:03 +0000 |
commit | 39cf8dededfa67a26fb01854930d6729ed0538a6 (patch) | |
tree | 4eab40578d7455376293dc82987b55c3661d246e | |
parent | a91e510f94e978f5fe8bd01417b6b52504f66ac7 (diff) | |
download | bcm5719-llvm-39cf8dededfa67a26fb01854930d6729ed0538a6.tar.gz bcm5719-llvm-39cf8dededfa67a26fb01854930d6729ed0538a6.zip |
fix rdar://8456389 - llvm-mc mismatch with 'as' on 'fstp'
-This line, and those below, will be ignored--
M test/MC/AsmParser/X86/x86_instructions.s
M lib/Target/X86/AsmParser/X86AsmParser.cpp
llvm-svn: 114527
-rw-r--r-- | llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp | 8 | ||||
-rw-r--r-- | llvm/test/MC/AsmParser/X86/x86_instructions.s | 6 |
2 files changed, 14 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp b/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp index 4c51ed674e3..d8650e06045 100644 --- a/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp +++ b/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp @@ -1015,6 +1015,14 @@ ParseInstruction(StringRef Name, SMLoc NameLoc, Operands[0] = X86Operand::CreateToken("movsl", NameLoc); } + // fstp <mem> -> fstps <mem>. Without this, we'll default to fstpl due to + // suffix searching. + if (Name == "fstp" && Operands.size() == 2 && + static_cast<X86Operand*>(Operands[1])->isMem()) { + delete Operands[0]; + Operands[0] = X86Operand::CreateToken("fstps", NameLoc); + } + return false; } diff --git a/llvm/test/MC/AsmParser/X86/x86_instructions.s b/llvm/test/MC/AsmParser/X86/x86_instructions.s index 7f8a401c076..207de850e7d 100644 --- a/llvm/test/MC/AsmParser/X86/x86_instructions.s +++ b/llvm/test/MC/AsmParser/X86/x86_instructions.s @@ -310,3 +310,9 @@ enter $0x7ace,$0 enter $0x7ace,$1 enter $0x7ace,$0x7f + +// rdar://8456389 +// CHECK: fstps (%eax) +// CHECK: encoding: [0xd9,0x18] +fstp (%eax) + |