http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57416
--- Comment #6 from Frank Bergemann <FBergemann at web dot de> --- the error depends on optimization level. -O0 has the problem -O1, -02, -03 do not have the problem. For those i get - even for the original buggy code: make all Building file: ../main.cpp Invoking: GCC C++ Compiler /opt/gcc-4.8.0/bin/g++ -O1 -g3 -Wall -c -std=c++11 -MMD -MP -MF"main.d" -MT"main.d" -o "main.o" "../main.cpp" ../main.cpp: In function ‘void func3(PARENTDATA&) [with PARENTDATA = func2(PARENTDATA&) [with PARENTDATA = func1(PARENTDATA&) [with PARENTDATA = Nothing]::Data]::Data]’: ../main.cpp:23:47: warning: ‘p_parent_data’ may be used uninitialized in this function [-Wmaybe-uninitialized] std::cout << "parent_data.parent_data.x = " << data.parent_data.parent_data.x << std::endl; ^ ../main.cpp: In function ‘void func2(PARENTDATA&) [with PARENTDATA = func1(PARENTDATA&) [with PARENTDATA = Nothing]::Data]’: ../main.cpp:29:9: warning: ‘p_parent_data’ is used uninitialized in this function [-Wuninitialized] Finished building: ../main.cpp Building target: RetainRecallOld Invoking: GCC C++ Linker /opt/gcc-4.8.0/bin/g++ -o "RetainRecallOld" ./main.o struct Data ^ ../main.cpp: In function ‘void func1(PARENTDATA&) [with PARENTDATA = Nothing]’: ../main.cpp:43:9: warning: ‘p_parent_data’ is used uninitialized in this function [-Wuninitialized] struct Data ^ Finished building target: RetainRecallOld **** Build Finished ****