https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111771
Bug ID: 111771 Summary: Incorrect "is used uninitialized" warning, as if zero-initialization didn't propagate through user-provided default constructors Product: gcc Version: 13.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: iamsupermouse at mail dot ru Target Milestone: --- Here's the code. GCC with `-Wall -O3` warns that `x` is used uninitialized, even though it's zeroed. struct A { A() {} int x; }; struct B : A {}; int main() { B b = B(); return b.x; } Since `B` doesn't have a user-provided default constructor, value-initializing it like this performs zero-initialization, which propagates recursively (http://eel.is/c++draft/dcl.dcl#dcl.init.general-6.2) over all members, zeroing everything. Yet GCC incorrectly warns about `x` being uninitialized.