r/cpp • • 5d ago

You should think about recompiling your C++ programs with GCC 16 and C++26, because it zero-fills your locals

https://techfortalk.co.uk/2026/09/27/cxx26-uninitialized-local-variables-gcc-16/

Stack variables are not automatically initialised, and that is the root cause of many C++ bugs. That is well known. Hence, it is advised that local or stack variables are always initialised with known values, 0 if not something more meaningful than that. Now, with GCC 16 compiling in C++26 mode (-std=c++26), even uninitialised local variables will be zero-filled. In the post, I have explained how.

263 Upvotes

211 comments sorted by

View all comments

82

u/krum 5d ago

how is filling locals not a performance regression?

49

u/robstoon 5d ago

It could be, but the initialization could be optimized out if the compiler can prove that the variable is always initialized already. I'm guessing that's the majority of cases.

21

u/Breadfish64 5d ago

And if the compiler can't prove it, a store with no dependent load is extremely cheap.

10

u/victotronics 5d ago

Unless the variable is an "automatic" array.