-
- Downloads
c++: -Wuninitialized when binding a ref to uninit DM [PR113987]
This PR asks that our -Wuninitialized for mem-initializers does not warn when binding a reference to an uninitialized data member. We already check !INDIRECT_TYPE_P in find_uninit_fields_r, but that won't catch binding a parameter of a reference type to an uninitialized field, as in: struct S { S (int&); }; struct T { T() : s(i) {} S s; int i; }; This patch adds a new function to handle this case. PR c++/113987 gcc/cp/ChangeLog: * call.cc (conv_binds_to_reference_parm_p): New. * cp-tree.h (conv_binds_to_reference_parm_p): Declare. * init.cc (find_uninit_fields_r): Call it. gcc/testsuite/ChangeLog: * g++.dg/warn/Wuninitialized-15.C: Turn dg-warning into dg-bogus. * g++.dg/warn/Wuninitialized-34.C: New test.
Showing
- gcc/cp/call.cc 24 additions, 0 deletionsgcc/cp/call.cc
- gcc/cp/cp-tree.h 1 addition, 0 deletionsgcc/cp/cp-tree.h
- gcc/cp/init.cc 2 additions, 1 deletiongcc/cp/init.cc
- gcc/testsuite/g++.dg/warn/Wuninitialized-15.C 1 addition, 2 deletionsgcc/testsuite/g++.dg/warn/Wuninitialized-15.C
- gcc/testsuite/g++.dg/warn/Wuninitialized-34.C 32 additions, 0 deletionsgcc/testsuite/g++.dg/warn/Wuninitialized-34.C
Loading
Please register or sign in to comment