From 6f0985e32284cbec07202f6ac91c23ff0bbe48cd Mon Sep 17 00:00:00 2001 From: Juergen Keil Date: Tue, 19 Aug 2003 16:38:19 +0000 Subject: GCC 3.3 on SPARC produces illegal code for 32-bit types, shifted by 32 bits. See gcc bug 11965 () Add a workaround, so that xine-lib can be compiled with gcc-3.3 on SPARC. CVS patchset: 5298 CVS date: 2003/08/19 16:38:19 --- src/libffmpeg/libavcodec/common.h | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/libffmpeg/libavcodec/common.h b/src/libffmpeg/libavcodec/common.h index 3c65c44d6..5cbda9126 100644 --- a/src/libffmpeg/libavcodec/common.h +++ b/src/libffmpeg/libavcodec/common.h @@ -350,14 +350,23 @@ static inline void put_bits(PutBitContext *s, int n, unsigned int value) bit_buf = s->bit_buf; bit_left = s->bit_left; + assert(bit_left >= 0 && bit_left <= 32); + // printf("n=%d value=%x cnt=%d buf=%x\n", n, value, bit_cnt, bit_buf); /* XXX: optimize */ if (n < bit_left) { - bit_buf = (bit_buf<> (n - bit_left); + if (bit_left == 32) + bit_buf=0; + else + bit_buf<<=bit_left; + if (n - bit_left < 32) + bit_buf |= value >> (n - bit_left); #ifdef UNALIGNED_STORES_ARE_BAD if (3 & (int) s->buf_ptr) { s->buf_ptr[0] = bit_buf >> 24; -- cgit v1.2.3