[Libguestfs] [nbdkit] [filter/nozero] large binary size with GCC 9

Thomas Weißschuh thomas at weissschuh.net
Fri Jul 5 16:01:46 UTC 2019


On Fri, 2019-07-05T10:02-0500, Eric Blake wrote:
> On 7/5/19 9:52 AM, Thomas Weißschuh wrote:
> 
> >> Good to know. So the fix is indeed removing 'const', rather than
> >> reducing scope (although I might as well reduce scope while at it, for
> >> consistency).
> > 
> > Does this not mean, the 64M are zeroed on every loop iteration in every call to
> > these functions?
> 
> No. static variables are guaranteed by the C standard to start life
> pre-initialized (where that initialization is guaranteed to be all
> zeroes if there is no explicit initializer), and that pre-initialization
> is NOT performed during each call to the function (the compiler may
> delay the initialization to the first function call, if that is cheaper
> than always initializing the storage even if the function doesn't get
> called, but the effect is the same).

Ah, yes I forgot the 'static'. Thanks for the clarification.

> > (Probably also depends on compiler optimizations)
> 
> Any compiler that initializes a static variable more than once is buggy.
> 
> > 
> > Maybe this will have some performance impact, or does it not matter with these
> > functions?
> 
> No, there should be no performance change.  If there were, that's an
> even more serious bug in gcc.

Yep, my bad.

Thanks again,
Thomas




More information about the Libguestfs mailing list