[tree-ssa] libbanshee seems to be not 64-bit clean

Daniel Berlin dberlin@dberlin.org
Sun Aug 17 20:52:00 GMT 2003


On Sunday, August 17, 2003, at 6:41 AM, Andreas Jaeger wrote:

>
> The following piece of code cannot work correctly IMO:
Actually, it does, except when you have different sized pointers and 
integers.
If this function didn't work, all hell would break loose.
It's just assigning integers to unique strings.

>
> stamp stamp_string(const char *str) deletes
> {
>   int st;
>   assert(str_hash != NULL);
>
>   if (! hash_table_lookup(str_hash,(hash_key)str, (hash_data *) &st))
>     {
>       st = stamp_fresh();
>       (void)hash_table_insert(str_hash,(hash_key)str,(hash_data) st);
>     }
>   return st;
> }
>
> hash_data is a pointer.  Daniel, can you look at the code?  I don't
> fully understand it so I'm not sure how to fix it properly.

Make the stamps use integers the same size as pointers.
Either that, or have it use pointers to integers (and allocate space 
for the integers).

> Btw. GCC complains about this on a 64-bit platform with:
> /cvs/gcc-tree-ssa-20020619-branch/libbanshee/engine/stamp.c:93: 
> warning: cast to pointer from integer of different size
>
> There's a similar warning which can be avoided with some extra
> cast, the code itself looks correct - but the function is not used
> anywhere, we can remove ptr_hash as far as I can see:

Probably, but libbanshee is an external library, so i'd rather #if 0 it 
out, than flat out remove it.

> /cvs/gcc-tree-ssa-20020619-branch/libbanshee/engine/util.c:177: 
> warning: cast from pointer to integer of different size
>
> Andreas
> -- 
>  Andreas Jaeger, aj@suse.de, http://www.suse.de/~aj
>   SuSE Linux AG, Deutschherrnstr. 15-19, 90429 Nürnberg, Germany
>    GPG fingerprint = 93A3 365E CE47 B889 DF7F  FED1 389A 563C C272 A126



More information about the Gcc mailing list