[llvm] r353496 - [WebAssembly] Fixed Disassembler ignoring endian swap on big endian.

Wouter van Oortmerssen via llvm-commits llvm-commits at lists.llvm.org
Thu Feb 7 17:43:23 PST 2019


Author: aardappel
Date: Thu Feb  7 17:43:23 2019
New Revision: 353496

URL: http://llvm.org/viewvc/llvm-project?rev=353496&view=rev
Log:
[WebAssembly] Fixed Disassembler ignoring endian swap on big endian.

Summary: This fixes: https://bugs.llvm.org/show_bug.cgi?id=40620

Reviewers: aheejin

Subscribers: dschuff, sbc100, jgravelle-google, sunfish, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D57933

Modified:
    llvm/trunk/lib/Target/WebAssembly/Disassembler/WebAssemblyDisassembler.cpp
    llvm/trunk/test/MC/Disassembler/WebAssembly/wasm.txt

Modified: llvm/trunk/lib/Target/WebAssembly/Disassembler/WebAssemblyDisassembler.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/WebAssembly/Disassembler/WebAssemblyDisassembler.cpp?rev=353496&r1=353495&r2=353496&view=diff
==============================================================================
--- llvm/trunk/lib/Target/WebAssembly/Disassembler/WebAssemblyDisassembler.cpp (original)
+++ llvm/trunk/lib/Target/WebAssembly/Disassembler/WebAssemblyDisassembler.cpp Thu Feb  7 17:43:23 2019
@@ -108,9 +108,8 @@ template <typename T>
 bool parseImmediate(MCInst &MI, uint64_t &Size, ArrayRef<uint8_t> Bytes) {
   if (Size + sizeof(T) > Bytes.size())
     return false;
-  T Val;
-  memcpy(&Val, Bytes.data() + Size, sizeof(T));
-  support::endian::byte_swap<T, support::endianness::little>(Val);
+  T Val = support::endian::read<T, support::endianness::little, alignof(T)>(
+      Bytes.data() + Size);
   Size += sizeof(T);
   if (std::is_floating_point<T>::value) {
     MI.addOperand(MCOperand::createFPImm(static_cast<double>(Val)));

Modified: llvm/trunk/test/MC/Disassembler/WebAssembly/wasm.txt
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/MC/Disassembler/WebAssembly/wasm.txt?rev=353496&r1=353495&r2=353496&view=diff
==============================================================================
--- llvm/trunk/test/MC/Disassembler/WebAssembly/wasm.txt (original)
+++ llvm/trunk/test/MC/Disassembler/WebAssembly/wasm.txt Thu Feb  7 17:43:23 2019
@@ -33,9 +33,7 @@
 # CHECK: i64.trunc_sat_f64_u
 0xFC 0x07
 
-# FIXME Disabled temporarily due to failures in clang-ppc64be-linux and
-# clang-s390x-linux bots
-# C HECK: v128.const 50462976, 117835012, 185207048, 252579084
+# CHECK: v128.const 50462976, 117835012, 185207048, 252579084
 0xFD 0x02 0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0A 0x0B 0x0C 0x0D 0x0E 0x0F
 
 # CHECK: v8x16.shuffle 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15




More information about the llvm-commits mailing list