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