Bitcode/BitstreamReader.h: Tweak for big endian hosts.
authorNAKAMURA Takumi <geek4civic@gmail.com>
Tue, 7 Feb 2012 10:53:19 +0000 (10:53 +0000)
committerNAKAMURA Takumi <geek4civic@gmail.com>
Tue, 7 Feb 2012 10:53:19 +0000 (10:53 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@149980 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Bitcode/BitstreamReader.h

index e55910b27ae4a31b8dfaca18327cd5c659f48d94..65868294403c02532cf79d0e3a3612a446eb13da 100644 (file)
@@ -17,6 +17,7 @@
 
 #include "llvm/ADT/OwningPtr.h"
 #include "llvm/Bitcode/BitCodes.h"
+#include "llvm/Support/Endian.h"
 #include "llvm/Support/StreamableMemoryObject.h"
 #include <climits>
 #include <string>
@@ -242,12 +243,13 @@ public:
   }
 
   uint32_t getWord(size_t pos) {
-    uint32_t word = -1;
+    uint8_t buf[sizeof(uint32_t)];
+    memset(buf, 0xFF, sizeof(buf));
     BitStream->getBitcodeBytes().readBytes(pos,
-                                           sizeof(word),
-                                           reinterpret_cast<uint8_t *>(&word),
+                                           sizeof(buf),
+                                           buf,
                                            NULL);
-    return word;
+    return *reinterpret_cast<support::ulittle32_t *>(buf);
   }
 
   bool AtEndOfStream() {