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."