Skip to content

Commit

Permalink
xdiff: avoid more compiler warnings with XDL_FAST_HASH on 32-bit mach…
Browse files Browse the repository at this point in the history
…ines

Hide literals that can cause compiler warnings for 32-bit architectures in
expressions that evaluate to small numbers there.  Some compilers warn that
0x0001020304050608 won't fit into a 32-bit long, others that shifting right
by 56 bits clears a 32-bit value completely.

The correct values are calculated in the 64-bit case, which is all that matters
in this if-branch.

Reported-by: Øyvind A. Holm <sunny@sunbase.org>
Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Acked-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
René Scharfe authored and gitster committed May 23, 2012
1 parent 9322ce2 commit 7e356a9
Showing 1 changed file with 7 additions and 1 deletion.
8 changes: 7 additions & 1 deletion xdiff/xutils.c
Original file line number Diff line number Diff line change
Expand Up @@ -301,7 +301,13 @@ static inline long count_masked_bytes(unsigned long mask)
* that works for the bytemasks without having to
* mask them first.
*/
return mask * 0x0001020304050608 >> 56;
/*
* return mask * 0x0001020304050608 >> 56;
*
* Doing it like this avoids warnings on 32-bit machines.
*/
long a = (REPEAT_BYTE(0x01) / 0xff + 1);
return mask * a >> (sizeof(long) * 7);
} else {
/*
* Modified Carl Chatfield G+ version for 32-bit *
Expand Down

0 comments on commit 7e356a9

Please sign in to comment.