# HG changeset patch # User michael # Date 1264360749 0 # Node ID 9bd48e510bef96bb2011b7bc5f3d65d19d6f80c2 # Parent 26f9c146ef2a95a5a01f76188cf7c28f9c51a1c6 Mark index as unsigend so gcc knows it doesnt need a sign extension on x86_64. Any tips on how i can convince gcc that it doesnt need a mov %eax, %eax in every get_bits() ? diff -r 26f9c146ef2a -r 9bd48e510bef get_bits.h --- a/get_bits.h Sun Jan 24 18:42:22 2010 +0000 +++ b/get_bits.h Sun Jan 24 19:19:09 2010 +0000 @@ -152,7 +152,7 @@ # define MIN_CACHE_BITS 25 # define OPEN_READER(name, gb)\ - int name##_index= (gb)->index;\ + unsigned int name##_index= (gb)->index;\ int name##_cache= 0;\ # define CLOSE_READER(name, gb)\ @@ -413,7 +413,7 @@ static inline unsigned int get_bits1(GetBitContext *s){ #ifdef ALT_BITSTREAM_READER - int index= s->index; + unsigned int index= s->index; uint8_t result= s->buffer[ index>>3 ]; #ifdef ALT_BITSTREAM_READER_LE result>>= (index&0x07); @@ -557,7 +557,8 @@ */ #define GET_VLC(code, name, gb, table, bits, max_depth)\ {\ - int n, index, nb_bits;\ + int n, nb_bits;\ + unsigned int index;\ \ index= SHOW_UBITS(name, gb, bits);\ code = table[index][0];\ @@ -588,7 +589,8 @@ #define GET_RL_VLC(level, run, name, gb, table, bits, max_depth, need_update)\ {\ - int n, index, nb_bits;\ + int n, nb_bits;\ + unsigned int index;\ \ index= SHOW_UBITS(name, gb, bits);\ level = table[index].level;\