aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp
diff options
context:
space:
mode:
authorJim Grosbach <grosbach@apple.com>2010-09-16 03:45:21 +0000
committerJim Grosbach <grosbach@apple.com>2010-09-16 03:45:21 +0000
commita8e47b3319db56675f8e80f4bb015c163110b902 (patch)
tree7c7cb8aed315b557095d15dc17c76f6af6fe4529 /lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp
parentf969868271f25df126047d0844f45b5e3b844b6d (diff)
downloadexternal_llvm-a8e47b3319db56675f8e80f4bb015c163110b902.zip
external_llvm-a8e47b3319db56675f8e80f4bb015c163110b902.tar.gz
external_llvm-a8e47b3319db56675f8e80f4bb015c163110b902.tar.bz2
store MC FP immediates as a double instead of as an APFloat, thus avoiding an
unnecessary dtor for MCOperand. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114064 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp')
-rw-r--r--lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp b/lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp
index 4dc16bb..971d642 100644
--- a/lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp
+++ b/lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp
@@ -1973,7 +1973,10 @@ static bool DisassembleVFPMiscFrm(MCInst &MI, unsigned Opcode, uint32_t insn,
// The asm syntax specifies the floating point value, not the 8-bit literal.
APInt immRaw = VFPExpandImm(slice(insn,19,16) << 4 | slice(insn, 3, 0),
Opcode == ARM::FCONSTD ? 64 : 32);
- MI.addOperand(MCOperand::CreateFPImm(APFloat(immRaw, true)));
+ APFloat immFP = APFloat(immRaw, true);
+ double imm = Opcode == ARM::FCONSTD ? immFP.convertToDouble() :
+ immFP.convertToFloat();
+ MI.addOperand(MCOperand::CreateFPImm(imm));
++OpIdx;
}