diff options
author | Marek Polacek <polacek@redhat.com> | 2024-02-20 15:55:55 -0500 |
---|---|---|
committer | Marek Polacek <polacek@redhat.com> | 2024-02-29 12:39:21 -0500 |
commit | b83f3cd3ff765fb82344b848b8a128763b7a4233 (patch) | |
tree | 6d8c54ef52070c02a52dde1a9c62bd6f898e8a93 /gcc/function.h | |
parent | bc0e18a960f9dff3e740f4d0cb5b25b3f68d920a (diff) | |
download | gcc-b83f3cd3ff765fb82344b848b8a128763b7a4233.zip gcc-b83f3cd3ff765fb82344b848b8a128763b7a4233.tar.gz gcc-b83f3cd3ff765fb82344b848b8a128763b7a4233.tar.bz2 |
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.
Diffstat (limited to 'gcc/function.h')
0 files changed, 0 insertions, 0 deletions