From: Benjamin Kramer <benny.kra@googlemail.com>
Date: Wed, 18 Nov 2009 13:53:27 +0000 (+0100)
Subject: Explicitly truncate bswap operand to uint32_t
X-Git-Tag: v1.6.6-rc1~29
X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/b073b7a990deb1cb3425db45642fa18c8b3cb65c

Explicitly truncate bswap operand to uint32_t

There are some places in git where a long is passed to htonl/ntohl. llvm
doesn't support matching operands of different bitwidths intentionally.
This patch fixes the build with llvm-gcc (and clang) on x86_64.

Signed-off-by: Benjamin Kramer <benny.kra@googlemail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
---

diff --git a/compat/bswap.h b/compat/bswap.h
index 279e0b48b1..f3b8c44181 100644
--- a/compat/bswap.h
+++ b/compat/bswap.h
@@ -24,7 +24,7 @@ static inline uint32_t default_swab32(uint32_t val)
 	if (__builtin_constant_p(x)) { \
 		__res = default_swab32(x); \
 	} else { \
-		__asm__("bswap %0" : "=r" (__res) : "0" (x)); \
+		__asm__("bswap %0" : "=r" (__res) : "0" ((uint32_t)(x))); \
 	} \
 	__res; })