https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64527
Bug ID: 64527 Summary: Constructor for empty struct not called in some situations Product: gcc Version: 4.9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: gcc at swtaarrs dot com Created attachment 34396 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=34396&action=edit c++ code exposing the bug Build ctor.cpp with the following command: > g++ -std=c++11 -Os -S -o ctor.S ctor.cpp The optimization level doesn't appear to affect the presence of the bug, I just used -Os to keep the output more compact. Expected results: The m() function in ctor.S should contain a call to A::A(). Actual results: m() does nothing but zero out accessor::x. I've found at least three ways to perturb the bug out of existence which are documented in comments in the file. The bug is also present in gcc 4.8.1 (I haven't tried anything older). Compiling with -Wextra reports "warning: missing initializer for member ‘accessor::a’ [-Wmissing-field-initializers]" but I believe this shouldn't affect the ouput. gcc build info: Target: x86_64-unknown-linux-gnu Configured with: ./configure --prefix=/home/matthew/gcc-4.9.0-prefix Thread model: posix gcc version 4.9.0 (GCC)