[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