1 --- sidplay-libs-2.1.1.orig/libsidplay/include/sidplay/sidendian.h
2 +++ sidplay-libs-2.1.1/libsidplay/include/sidplay/sidendian.h
4 ***************************************************************************/
5 /***************************************************************************
6 * $Log: sidendian.h,v $
7 + * Revision 1.6 2005/11/20 11:02:06 s_a_white
8 + * Work around for bug in gcc 4 (optimiser breaks if variable never has a
9 + * direct assignment).
11 * Revision 1.5 2001/07/03 22:44:13 s_a_white
12 * Added endian_16 to convert a 16 bit value to an array of 8s.
15 // Convert high-byte and low-byte to 16-bit word.
16 inline uint_least16_t endian_16 (uint8_t hi, uint8_t lo)
18 - uint_least16_t word;
19 + uint_least16_t word = 0;
20 endian_16lo8 (word, lo);
21 endian_16hi8 (word, hi);
25 inline void endian_32swap8 (uint_least32_t &dword)
27 - uint_least16_t lo, hi;
28 + uint_least16_t lo = 0, hi = 0;
29 lo = endian_32lo16 (dword);
30 hi = endian_32hi16 (dword);
33 // Convert high-byte and low-byte to 32-bit word.
34 inline uint_least32_t endian_32 (uint8_t hihi, uint8_t hilo, uint8_t hi, uint8_t lo)
36 - uint_least32_t dword;
37 - uint_least16_t word;
38 + uint_least32_t dword = 0;
39 + uint_least16_t word = 0;
40 endian_32lo8 (dword, lo);
41 endian_32hi8 (dword, hi);
42 endian_16lo8 (word, hilo);
44 defined(SID_WORDS_LITTLEENDIAN)
45 *((uint_least32_t *) ptr) = dword;
47 - uint_least16_t word;
48 + uint_least16_t word = 0;
49 ptr[0] = endian_32lo8 (dword);
50 ptr[1] = endian_32hi8 (dword);
51 word = endian_32hi16 (dword);
53 defined(SID_WORDS_BIGENDIAN)
54 *((uint_least32_t *) ptr) = dword;
56 - uint_least16_t word;
57 + uint_least16_t word = 0;
58 word = endian_32hi16 (dword);
59 ptr[1] = endian_16lo8 (word);
60 ptr[0] = endian_16hi8 (word);