svn commit: r235267 - in head/usr.bin/sort: . nls
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. 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.
 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-head