libstdc++: Fix -Wmaybe-uninitialized false positive [PR103984]
authorJonathan Wakely <jwakely@redhat.com>
Tue, 1 Mar 2022 09:33:21 +0000 (09:33 +0000)
committerJonathan Wakely <jwakely@redhat.com>
Tue, 1 Mar 2022 15:25:39 +0000 (15:25 +0000)
This fixes a false positive warning seen with LTO:

12/bits/regex_compiler.tcc:443:32: error: '__last_char._M_char' may be used uninitialized [-Werror=maybe-uninitialized]

Given that the std::regex code is not very efficient anyway, the
overhead of initializing this byte should be minimal.

libstdc++-v3/ChangeLog:

PR middle-end/103984
* include/bits/regex_compiler.h (_BracketMatcher::_M_char): Use
default member initializer.

libstdc++-v3/include/bits/regex_compiler.h

index 174aefe..348c170 100644 (file)
@@ -125,7 +125,7 @@ namespace __detail
       struct _BracketState
       {
        enum class _Type : char { _None, _Char, _Class } _M_type = _Type::_None;
-       _CharT _M_char;
+       _CharT _M_char = _CharT();
 
        void
        set(_CharT __c) noexcept { _M_type = _Type::_Char; _M_char = __c; }