svn commit: r235267 - in head/usr.bin/sort: . nls

David Chisnall theraven at FreeBSD.org
Fri May 11 12:57:30 UTC 2012


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.


More information about the svn-src-all mailing list