https://gcc.gnu.org/bugzilla/show_bug.cgi?id=52167
Martin Sebor <msebor at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |FIXED Known to fail| |10.2.0, 4.1.0, 4.8.4, | |4.9.4, 5.5.0, 6.4.0, 7.2.0, | |8.3.0, 9.1.0 Target Milestone|--- |11.0 Status|NEW |RESOLVED Component|c++ |tree-optimization --- Comment #8 from Martin Sebor <msebor at gcc dot gnu.org> --- GCC 11 (since g:b825a22890740f341eae566af27e18e528cd29a7) diagnoses passing an uninitialized object by const reference by -Wmaybe-uninitialized: $ g++ -S -Wall pr52167.C pr52167.C: In function ‘int main()’: pr52167.C:8:23: warning: ‘foo’ may be used uninitialized [-Wmaybe-uninitialized] 8 | const string foo(foo); | ^ In file included from /build/gcc-master/x86_64-pc-linux-gnu/libstdc++-v3/include/string:55, from /build/gcc-master/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/locale_classes.h:40, from /build/gcc-master/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/ios_base.h:41, from /build/gcc-master/x86_64-pc-linux-gnu/libstdc++-v3/include/ios:42, from /build/gcc-master/x86_64-pc-linux-gnu/libstdc++-v3/include/ostream:38, from /build/gcc-master/x86_64-pc-linux-gnu/libstdc++-v3/include/iostream:39, from pr52167.C:1: /build/gcc-master/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/basic_string.h:448:7: note: by argument 2 of type ‘const std::__cxx11::basic_string<char>&’ to ‘std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::basic_string(const std::__cxx11::basic_string<_CharT, _Traits, _Alloc>&) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’ declared here 448 | basic_string(const basic_string& __str) | ^~~~~~~~~~~~ pr52167.C:8:16: note: ‘foo’ declared here 8 | const string foo(foo); | ^~~