diff options
author | Chris Lattner <sabre@nondot.org> | 2013-02-13 04:53:40 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2013-02-13 04:53:40 +0000 |
commit | 519e1475d64d80f4632296318b3a5240d4f70a72 (patch) | |
tree | 8ed181e540e3f98816c80ec4a32e748a1144610a /include/llvm/Bitcode/BitstreamReader.h | |
parent | b3cecdfcf9a0b736d3c0f6f5abffb41ecda3577c (diff) |
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.h | 17 |
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); |