summaryrefslogtreecommitdiff
path: root/include/llvm/Bitcode/BitstreamReader.h
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2013-02-13 04:53:40 +0000
committerChris Lattner <sabre@nondot.org>2013-02-13 04:53:40 +0000
commit519e1475d64d80f4632296318b3a5240d4f70a72 (patch)
tree8ed181e540e3f98816c80ec4a32e748a1144610a /include/llvm/Bitcode/BitstreamReader.h
parentb3cecdfcf9a0b736d3c0f6f5abffb41ecda3577c (diff)
downloadllvm-519e1475d64d80f4632296318b3a5240d4f70a72.tar.gz
llvm-519e1475d64d80f4632296318b3a5240d4f70a72.tar.bz2
llvm-519e1475d64d80f4632296318b3a5240d4f70a72.tar.xz
use memcpy instead of dubious union to type pun two values,
thanks to David Blaike for pointing this out. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175032 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/Bitcode/BitstreamReader.h')
-rw-r--r--include/llvm/Bitcode/BitstreamReader.h17
1 files changed, 9 insertions, 8 deletions
diff --git a/include/llvm/Bitcode/BitstreamReader.h b/include/llvm/Bitcode/BitstreamReader.h
index edec6e1da5..2d2976cde1 100644
--- a/include/llvm/Bitcode/BitstreamReader.h
+++ b/include/llvm/Bitcode/BitstreamReader.h
@@ -364,16 +364,17 @@ public:
uint32_t R = uint32_t(CurWord);
// Read the next word from the stream.
- union {
- uint8_t ArrayMember[sizeof(word_t)];
- support::detail::packed_endian_specific_integral
- <word_t, support::little, support::unaligned> EndianMember;
- } buf = { { 0 } };
+ uint8_t Array[sizeof(word_t)] = {0};
+
+ BitStream->getBitcodeBytes().readBytes(NextChar, sizeof(Array),
+ Array, NULL);
- BitStream->getBitcodeBytes().readBytes(NextChar, sizeof(buf),
- buf.ArrayMember, NULL);
// Handle big-endian byte-swapping if necessary.
- CurWord = buf.EndianMember;
+ support::detail::packed_endian_specific_integral
+ <word_t, support::little, support::unaligned> EndianValue;
+ memcpy(&EndianValue, Array, sizeof(Array));
+
+ CurWord = EndianValue;
NextChar += sizeof(word_t);