https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121301
Bug ID: 121301 Summary: Errors in system includes when compiling with -O3 -fkeep-inline-functions -Werror=maybe-uninitialized Product: gcc Version: 15.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: alessandro.vergani at argo dot vision Target Milestone: --- Whan compiling a very simple file that only includes `format`, like this: === #include <format> === and passing to g++ -std=c++20 -O3 -fkeep-inline-functions -Werror=maybe-uninitialized it produces the following error. Compiling with -O2 or without -fkeep-inline-functions works as expected === $ g++ -O3 -std=c++20 -Werror=maybe-uninitialized -fkeep-inline-functions test.cpp In file included from /opt/gcc-15/include/c++/15.1.0/format:61, from test.cpp:1: In function 'constexpr int std::__unicode::__v16_0_0::__field_width(char32_t)', inlined from 'constexpr int std::__unicode::__v16_0_0::_Grapheme_cluster_view<_View>::_Iterator::width() const [with _View = std::basic_string_view<wchar_t>]' at /opt/gcc-15/include/c++/15.1.0/bits/unicode.h:846:24, inlined from 'constexpr std::size_t std::__unicode::__truncate(std::basic_string_view<_CharT>&, std::size_t) [with _CharT = wchar_t]' at /opt/gcc-15/include/c++/15.1.0/bits/unicode.h:993:30: /opt/gcc-15/include/c++/15.1.0/bits/unicode.h:610:5: error: '*(std::__unicode::__v16_0_0::_Grapheme_cluster_view<std::basic_string_view<wchar_t, std::char_traits<wchar_t> > >::_Iterator*)((char*)&__gc + offsetof(std::__unicode::__v16_0_0::_Grapheme_cluster_view<std::basic_string_view<wchar_t, std::char_traits<wchar_t> > >,std::__unicode::__v16_0_0::_Grapheme_cluster_view<std::basic_string_view<wchar_t, std::char_traits<wchar_t> > >::<unnamed>)).std::__unicode::__v16_0_0::_Grapheme_cluster_view<std::basic_string_view<wchar_t> >::_Iterator::std::__unicode::__v16_0_0::_Grapheme_cluster_iterator_base.std::__unicode::__v16_0_0::_Grapheme_cluster_iterator_base::_M_c' may be used uninitialized [-Werror=maybe-uninitialized] 610 | if (__c < __width_edges[0]) [[likely]] | ^~ /opt/gcc-15/include/c++/15.1.0/bits/unicode.h: In function 'constexpr std::size_t std::__unicode::__truncate(std::basic_string_view<_CharT>&, std::size_t) [with _CharT = wchar_t]': /opt/gcc-15/include/c++/15.1.0/bits/unicode.h:990:57: note: '*(std::__unicode::__v16_0_0::_Grapheme_cluster_view<std::basic_string_view<wchar_t, std::char_traits<wchar_t> > >::_Iterator*)((char*)&__gc + offsetof(std::__unicode::__v16_0_0::_Grapheme_cluster_view<std::basic_string_view<wchar_t, std::char_traits<wchar_t> > >,std::__unicode::__v16_0_0::_Grapheme_cluster_view<std::basic_string_view<wchar_t, std::char_traits<wchar_t> > >::<unnamed>)).std::__unicode::__v16_0_0::_Grapheme_cluster_view<std::basic_string_view<wchar_t> >::_Iterator::std::__unicode::__v16_0_0::_Grapheme_cluster_iterator_base.std::__unicode::__v16_0_0::_Grapheme_cluster_iterator_base::_M_c' was declared here 990 | _Grapheme_cluster_view<basic_string_view<_CharT>> __gc(__s); | ^~~~ In function 'constexpr int std::__unicode::__v16_0_0::__field_width(char32_t)', inlined from 'constexpr int std::__unicode::__v16_0_0::_Grapheme_cluster_view<_View>::_Iterator::width() const [with _View = std::basic_string_view<wchar_t>]' at /opt/gcc-15/include/c++/15.1.0/bits/unicode.h:846:24, inlined from 'constexpr std::size_t std::__unicode::__field_width(std::basic_string_view<_CharT>) [with _CharT = wchar_t]' at /opt/gcc-15/include/c++/15.1.0/bits/unicode.h:975:30: /opt/gcc-15/include/c++/15.1.0/bits/unicode.h:610:5: error: '*(std::__unicode::__v16_0_0::_Grapheme_cluster_view<std::basic_string_view<wchar_t, std::char_traits<wchar_t> > >::_Iterator*)((char*)&__gc + offsetof(std::__unicode::__v16_0_0::_Grapheme_cluster_view<std::basic_string_view<wchar_t, std::char_traits<wchar_t> > >,std::__unicode::__v16_0_0::_Grapheme_cluster_view<std::basic_string_view<wchar_t, std::char_traits<wchar_t> > >::<unnamed>)).std::__unicode::__v16_0_0::_Grapheme_cluster_view<std::basic_string_view<wchar_t> >::_Iterator::std::__unicode::__v16_0_0::_Grapheme_cluster_iterator_base.std::__unicode::__v16_0_0::_Grapheme_cluster_iterator_base::_M_c' may be used uninitialized [-Werror=maybe-uninitialized] 610 | if (__c < __width_edges[0]) [[likely]] | ^~ /opt/gcc-15/include/c++/15.1.0/bits/unicode.h: In function 'constexpr std::size_t std::__unicode::__field_width(std::basic_string_view<_CharT>) [with _CharT = wchar_t]': /opt/gcc-15/include/c++/15.1.0/bits/unicode.h:972:57: note: '*(std::__unicode::__v16_0_0::_Grapheme_cluster_view<std::basic_string_view<wchar_t, std::char_traits<wchar_t> > >::_Iterator*)((char*)&__gc + offsetof(std::__unicode::__v16_0_0::_Grapheme_cluster_view<std::basic_string_view<wchar_t, std::char_traits<wchar_t> > >,std::__unicode::__v16_0_0::_Grapheme_cluster_view<std::basic_string_view<wchar_t, std::char_traits<wchar_t> > >::<unnamed>)).std::__unicode::__v16_0_0::_Grapheme_cluster_view<std::basic_string_view<wchar_t> >::_Iterator::std::__unicode::__v16_0_0::_Grapheme_cluster_iterator_base.std::__unicode::__v16_0_0::_Grapheme_cluster_iterator_base::_M_c' was declared here 972 | _Grapheme_cluster_view<basic_string_view<_CharT>> __gc(__s); | ^~~~ cc1plus: some warnings being treated as errors $ gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/opt/gcc-15/libexec/gcc/x86_64-pc-linux-gnu/15.1.0/lto-wrapper Target: x86_64-pc-linux-gnu Configured with: ../sources/configure --prefix=/opt/gcc-15 --disable-multilib --enable-languages=c,c++ Thread model: posix Supported LTO compression algorithms: zlib zstd gcc version 15.1.0 (GCC)