From: Junio C Hamano Date: Sat, 15 Aug 2009 01:46:46 GMT Subject: Re: [PATCH] block-sha1/sha1.c: silence compiler complaints by casting void* to uintptr_t Message-ID: <7v8whl7ss9.fsf@alter.siamese.dyndns.org> In-Reply-To: <5HEgWEs64y4Ty7FnekstRP8Q71pNi_FTweLbMhYWc6zoZBA4jkJqpQ@cipher.nrlssc.navy.mil> Brandon Casey writes: > Linus Torvalds wrote: >> I suspect it might as well be cast to "const char *", and then >> hopefully you only need one cast. >> >> So maybe it could be written as >> >> data = (const char *) data + len; >> >> instead, and avoid the second cast (because the assignment should be ok, >> since it's assigning back to a "const void *"). > > Yep, that's enough. It produces an identical binary on all platforms > except Solaris x86 using SUNWspro compiler. Casting to "const char *" to tell compilers that we are interested in byte address differences/increments makes sense to me, but I do not know how to interpret your last comment. Do you mean that SUNWspro compiler misbehave with the "cast to char *" and do you meed your "casting to uintptr_t to explicitly compute byte addresses as int" to make it behave?