https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107078

--- Comment #5 from Tomasz Kłoczko <kloczko.tomasz at gmail dot com> ---
FWD of the firebird developer from
https://github.com/FirebirdSQL/firebird/issues/7308#issuecomment-1262043660

"Firebird (that code left from interbase times) traditionally zeroes
memory when allocating a lot of internal data structures using function
like calloc(). When moving from C to C++ it was wrapped into operator
new of some base class in order to avoid type casts, be able to use
ctors and a lot of other c++ features. 20 years ago it was fine. Some
years ago an optimization removing any data initalization in new (data
returned by it is not initialized according to standard). By itself it
did not affect the code - our calloc() is placed into separate file,
it's not inline. But together with cross-file optimization... we get
what you've seen.

Certainly correct fix is to move memory initialization into ctor - but
that was not done yet.

May be there some more issues with LTO, I did not learn it deeper."

Reply via email to