Skip to content

Commit

Permalink
use memcpy instead of dubious union to type pun two values,
Browse files Browse the repository at this point in the history
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
  • Loading branch information
lattner committed Feb 13, 2013
1 parent b3cecdf commit 519e147
Showing 1 changed file with 9 additions and 8 deletions.
17 changes: 9 additions & 8 deletions include/llvm/Bitcode/BitstreamReader.h
Original file line number Diff line number Diff line change
Expand Up @@ -364,16 +364,17 @@ class BitstreamCursor {
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);

Expand Down

0 comments on commit 519e147

Please sign in to comment.