xdiff: avoid compiler warnings with XDL_FAST_HASH on 32-bit machines
authorRené Scharfe <rene.scharfe@lsrfire.ath.cx>
Tue, 22 May 2012 20:36:25 +0000 (22:36 +0200)
committerJunio C Hamano <gitster@pobox.com>
Tue, 22 May 2012 21:39:49 +0000 (14:39 -0700)
Import macro REPEAT_BYTE from Linux (arch/x86/include/asm/word-at-a-time.h)
to avoid 64-bit integer literals, which cause some 32-bit compilers to
print warnings.

Reported-by: Øyvind A. Holm <sunny@sunbase.org>
Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
xdiff/xutils.c

index 1b3b471ac86a30474e3acabea3d2df3b6da072d8..277ccdff024436b78e74f357103a0621836422ee 100644 (file)
@@ -280,9 +280,11 @@ static unsigned long xdl_hash_record_with_whitespace(char const **data,
 
 #ifdef XDL_FAST_HASH
 
-#define ONEBYTES       0x0101010101010101ul
-#define NEWLINEBYTES   0x0a0a0a0a0a0a0a0aul
-#define HIGHBITS       0x8080808080808080ul
+#define REPEAT_BYTE(x)  ((~0ul / 0xff) * (x))
+
+#define ONEBYTES       REPEAT_BYTE(0x01)
+#define NEWLINEBYTES   REPEAT_BYTE(0x0a)
+#define HIGHBITS       REPEAT_BYTE(0x80)
 
 /* Return the high bit set in the first byte that is a zero */
 static inline unsigned long has_zero(unsigned long a)