瀏覽代碼

[MSP430] Fix encodeInstruction() for big endian hosts

Reviewers: asl

Subscribers: llvm-commits

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@346391 91177308-0d34-0410-b5e6-96231b3b80d8
Anton Korobeynikov 6 年之前
父節點
當前提交
5f0b3c07f1
共有 1 個文件被更改,包括 3 次插入4 次删除
  1. 3 4
      lib/Target/MSP430/MCTargetDesc/MSP430MCCodeEmitter.cpp

+ 3 - 4
lib/Target/MSP430/MCTargetDesc/MSP430MCCodeEmitter.cpp

@@ -91,12 +91,11 @@ void MSP430MCCodeEmitter::encodeInstruction(const MCInst &MI, raw_ostream &OS,
   Offset = 2;
 
   uint64_t BinaryOpCode = getBinaryCodeForInstr(MI, Fixups, STI);
-  const uint16_t *Words = reinterpret_cast<uint16_t const *>(&BinaryOpCode);
   size_t WordCount = Size / 2;
 
-  for (size_t i = 0; i < WordCount; ++i) {
-    uint16_t Word = Words[i];
-    support::endian::write(OS, Word, support::little);
+  while (WordCount--) {
+    support::endian::write(OS, (uint16_t)BinaryOpCode, support::little);
+    BinaryOpCode >>= 16;
   }
 }