[llvm] e5269da - [ARM][WebAssembly] Fix incorrect MCOperand::createDFPImm after D96091

Fangrui Song via llvm-commits llvm-commits at lists.llvm.org
Thu Feb 4 20:40:00 PST 2021


Author: Fangrui Song
Date: 2021-02-04T20:39:52-08:00
New Revision: e5269da9794f90727510fb51c8d225008a407cc4

URL: https://github.com/llvm/llvm-project/commit/e5269da9794f90727510fb51c8d225008a407cc4
DIFF: https://github.com/llvm/llvm-project/commit/e5269da9794f90727510fb51c8d225008a407cc4.diff

LOG: [ARM][WebAssembly] Fix incorrect MCOperand::createDFPImm after D96091

Added: 
    

Modified: 
    llvm/lib/Target/ARM/ARMMCInstLower.cpp
    llvm/lib/Target/WebAssembly/Disassembler/WebAssemblyDisassembler.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Target/ARM/ARMMCInstLower.cpp b/llvm/lib/Target/ARM/ARMMCInstLower.cpp
index 2c12e188049f..e4b022968431 100644
--- a/llvm/lib/Target/ARM/ARMMCInstLower.cpp
+++ b/llvm/lib/Target/ARM/ARMMCInstLower.cpp
@@ -110,7 +110,7 @@ bool ARMAsmPrinter::lowerOperand(const MachineOperand &MO,
     APFloat Val = MO.getFPImm()->getValueAPF();
     bool ignored;
     Val.convert(APFloat::IEEEdouble(), APFloat::rmTowardZero, &ignored);
-    MCOp = MCOperand::createDFPImm(Val.convertToDouble());
+    MCOp = MCOperand::createDFPImm(bit_cast<uint64_t>(Val.convertToDouble()));
     break;
   }
   case MachineOperand::MO_RegisterMask:

diff  --git a/llvm/lib/Target/WebAssembly/Disassembler/WebAssemblyDisassembler.cpp b/llvm/lib/Target/WebAssembly/Disassembler/WebAssemblyDisassembler.cpp
index f2522562e535..36ef46eb48b8 100644
--- a/llvm/lib/Target/WebAssembly/Disassembler/WebAssemblyDisassembler.cpp
+++ b/llvm/lib/Target/WebAssembly/Disassembler/WebAssemblyDisassembler.cpp
@@ -114,7 +114,8 @@ bool parseImmediate(MCInst &MI, uint64_t &Size, ArrayRef<uint8_t> Bytes) {
       Bytes.data() + Size);
   Size += sizeof(T);
   if (std::is_floating_point<T>::value) {
-    MI.addOperand(MCOperand::createDFPImm(static_cast<double>(Val)));
+    MI.addOperand(
+        MCOperand::createDFPImm(bit_cast<uint64_t>(static_cast<double>(Val))));
   } else {
     MI.addOperand(MCOperand::createImm(static_cast<int64_t>(Val)));
   }


        


More information about the llvm-commits mailing list