Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 11 May 2012 08:57:29 -0400
From:      David Chisnall <theraven@FreeBSD.org>
To:        Konstantin Belousov <kostikbel@gmail.com>
Cc:        svn-src-head@FreeBSD.org, svn-src-all@FreeBSD.org, src-committers@FreeBSD.org, Gabor Kovesdan <gabor@FreeBSD.org>
Subject:   Re: svn commit: r235267 - in head/usr.bin/sort: . nls
Message-ID:  <6AE99277-D90F-453D-AE40-EE731DFD3BAB@FreeBSD.org>
In-Reply-To: <20120511124820.GN2358@deviant.kiev.zoral.com.ua>
References:  <201205111237.q4BCbGX2083596@svn.freebsd.org> <20120511124820.GN2358@deviant.kiev.zoral.com.ua>

next in thread | previous in thread | raw e-mail | index | archive | help

On 11 May 2012, at 08:48, Konstantin Belousov wrote:

> On Fri, May 11, 2012 at 12:37:16PM +0000, Gabor Kovesdan wrote:
>> Author: gabor
>> Date: Fri May 11 12:37:16 2012
>> New Revision: 235267
>> URL: http://svn.freebsd.org/changeset/base/235267
> 
>> +bool byte_sort = false;
>> +
>> +static wchar_t **wmonths = NULL;
>> +static unsigned char **cmonths = NULL;
> 
> Such initializations are useless. You only increase the size of the binary
> on the disk as the consequence.

Really?  The C specification requires all globals and statics that are not explicitly initialised to be set to their zero value, so this initialisation has no effect on the resulting binary[1].  These are placed in the BSS section, irrespective of whether the initialisation is implicit or explicit and the loader is responsible for allocating space for them - all that is stored in the binary is the size.

For local variables, initialisation like this has no effect even at low optimisation levels - dead stores will be removed.  It does, however, make it more difficult for the compiler to distinguish between initialised and initialised sensibly in some cases.

David

[1] In a standards-compliant compiler.  Apparently a few shipping compilers for embedded systems fail to respect this, but everything FreeBSD is compiled with does.


Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?6AE99277-D90F-453D-AE40-EE731DFD3BAB>