Thread (19 messages) flat view 19 messages, 7 authors, 2016-06-15

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.3
Right, 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 ;-)
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help