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
This commit is contained in:
Chris Lattner
2013-02-13 04:53:40 +00:00
parent b3cecdfcf9
commit 519e1475d6

View File

@@ -364,16 +364,17 @@ public:
uint32_t R = uint32_t(CurWord); uint32_t R = uint32_t(CurWord);
// Read the next word from the stream. // Read the next word from the stream.
union { uint8_t Array[sizeof(word_t)] = {0};
uint8_t ArrayMember[sizeof(word_t)];
support::detail::packed_endian_specific_integral BitStream->getBitcodeBytes().readBytes(NextChar, sizeof(Array),
<word_t, support::little, support::unaligned> EndianMember; Array, NULL);
} buf = { { 0 } };
BitStream->getBitcodeBytes().readBytes(NextChar, sizeof(buf),
buf.ArrayMember, NULL);
// Handle big-endian byte-swapping if necessary. // 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); NextChar += sizeof(word_t);