Re: [PATCH 4/4] transport: drop "int cmp = cmp" hack
From: Torsten Bögershausen <hidden>
Date: 2016-06-15 22:56:30
Subsystem:
the rest · Maintainer:
Linus Torvalds
On 24.03.13 10:32, Jeff King wrote:
On Sat, Mar 23, 2013 at 09:00:05PM -0700, Junio C Hamano wrote:quoted
On Thu, Mar 21, 2013 at 4:13 AM, Jeff King [off-list ref] wrote:quoted
According to 47ec794, this initialization is meant to squelch an erroneous uninitialized variable warning from gcc 4.0.1. That version is quite old at this point, and gcc 4.1 and up handle it fine, with one exception. There seems to be a regression in gcc 4.6.3, which produces the warning; however, gcc versions 4.4.7 and 4.7.2 do not.transport.c: In function 'get_refs_via_rsync': transport.c:127:29: error: 'cmp' may be used uninitialized in this function [-Werror=uninitialized] transport.c:109:7: note: 'cmp' was declared here gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3Right, that's the same version I noted above. Is 4.6.3 the default compiler under a particular release of Ubuntu, or did you use their gcc-4.6 package? -Peff
Side question: How much does it hurt to write like this:
diff --git a/transport.c b/transport.c
index 6b2ae94..8020b62 100644
--- a/transport.c
+++ b/transport.c@@ -106,7 +106,7 @@ static void insert_packed_refs(const char *packed_refs, struct ref **list) return; for (;;) { - int cmp, len; + int cmp=0, len;
============== Using Ubuntu 10.4, using gcc (Ubuntu 4.4.3-4ubuntu5.1) 4.4.3 the compiler will add a line like this: 2e83: 31 ff xor %edi,%edi (Which should not be to slow to execute) Looking at a later gcc, from upcoming Debian, with gcc (Debian 4.7.2-5) 4.7.2 the assembly code is exactly the same ;-)