diff options
author | Dale Johannesen <dalej@apple.com> | 2010-02-02 23:54:23 +0000 |
---|---|---|
committer | Dale Johannesen <dalej@apple.com> | 2010-02-02 23:54:23 +0000 |
commit | 9d73d78f4542e7f19eca79f713b13ef57a92a6a4 (patch) | |
tree | 07a1c2fc023c44fa854a2fe81d3a546ae3de9ea6 /lib/Target/X86/AsmPrinter | |
parent | e7070e90066acc3460af1d6cac4036a80b0250b8 (diff) | |
download | external_llvm-9d73d78f4542e7f19eca79f713b13ef57a92a6a4.zip external_llvm-9d73d78f4542e7f19eca79f713b13ef57a92a6a4.tar.gz external_llvm-9d73d78f4542e7f19eca79f713b13ef57a92a6a4.tar.bz2 |
Accept floating point immediates in DEBUG_VALUE.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@95159 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/X86/AsmPrinter')
-rw-r--r-- | lib/Target/X86/AsmPrinter/X86MCInstLower.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/lib/Target/X86/AsmPrinter/X86MCInstLower.cpp b/lib/Target/X86/AsmPrinter/X86MCInstLower.cpp index 350b1fa..40b1f7b 100644 --- a/lib/Target/X86/AsmPrinter/X86MCInstLower.cpp +++ b/lib/Target/X86/AsmPrinter/X86MCInstLower.cpp @@ -430,12 +430,22 @@ void X86AsmPrinter::EmitInstruction(const MachineInstr *MI) { if (NOps==3) { // Register or immediate value. Register 0 means undef. assert(MI->getOperand(0).getType()==MachineOperand::MO_Register || - MI->getOperand(0).getType()==MachineOperand::MO_Immediate); + MI->getOperand(0).getType()==MachineOperand::MO_Immediate || + MI->getOperand(0).getType()==MachineOperand::MO_FPImmediate); if (MI->getOperand(0).getType()==MachineOperand::MO_Register && MI->getOperand(0).getReg()==0) { // Suppress offset in this case, it is not meaningful. O << "undef"; return; + } else if (MI->getOperand(0).getType()==MachineOperand::MO_FPImmediate) { + // This is more naturally done in printOperand, but since the only use + // of such an operand is in this comment and that is temporary, we + // prefer to keep this mess localized. + SmallVectorImpl<char> Str(20); + APFloat APF = MI->getOperand(0).getFPImm()->getValueAPF(); + APF.toString(Str, 0, 0); + for (unsigned i=0; i<Str.size()-1; i++) + O << Str[i]; } else printOperand(MI, 0); } else { |