Bug 97153 - -Wformat causes libstdc++ tests to FAIL
Summary: -Wformat causes libstdc++ tests to FAIL
Status: NEW
Alias: None
Product: gcc
Classification: Unclassified
Component: c++ (show other bugs)
Version: 10.2.1
: P3 normal
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords: rejects-valid, testsuite-fail
Depends on:
Blocks:
 
Reported: 2020-09-21 19:08 UTC by Jonathan Wakely
Modified: 2021-12-27 22:35 UTC (History)
3 users (show)

See Also:
Host:
Target:
Build:
Known to work: 11.0
Known to fail: 10.1.0, 10.2.0, 10.2.1
Last reconfirmed: 2020-09-21 00:00:00


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Jonathan Wakely 2020-09-21 19:08:46 UTC
The attached preprocessed code compiles with -std=gnu++20 -O1 but fails if you add -Wformat

This is the output for -std=gnu++20 -O1 -fcompare-debug=-Wformat

In file included from /home/jwakely/src/gcc/build10/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/ranges_algobase.h:38,
                 from /home/jwakely/src/gcc/build10/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/ranges_algo.h:35,
                 from /home/jwakely/src/gcc/build10/x86_64-pc-linux-gnu/libstdc++-v3/include/algorithm:64,
                 from /home/jwakely/src/gcc/gcc-10/libstdc++-v3/testsuite/std/ranges/adaptors/join.cc:21:
/home/jwakely/src/gcc/build10/x86_64-pc-linux-gnu/libstdc++-v3/include/ranges: In instantiation of ‘constexpr const _Derived& std::ranges::view_interface<_Derived>::_M_derived() const [with _Derived = std::ranges::join_view<std::ranges::transform_view<std::ranges::subrange<std::counted_iterator<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*, std::vector<std::__cxx11::basic_string<char> > > >, std::default_sentinel_t, std::ranges::subrange_kind::sized>, std::identity> >]’:
/home/jwakely/src/gcc/build10/x86_64-pc-linux-gnu/libstdc++-v3/include/ranges:130:73:   required from ‘constexpr std::ranges::view_interface<_Derived>::operator bool() const requires requires{std::ranges::__cust::empty(((const std::ranges::view_interface<_Derived>*)this)->std::ranges::view_interface<_Derived>::_M_derived()());} [with _Derived = std::ranges::join_view<std::ranges::transform_view<std::ranges::subrange<std::counted_iterator<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*, std::vector<std::__cxx11::basic_string<char> > > >, std::default_sentinel_t, std::ranges::subrange_kind::sized>, std::identity> >]’
/home/jwakely/src/gcc/build10/x86_64-pc-linux-gnu/libstdc++-v3/include/ranges:2673:56:   required from ‘constexpr auto std::ranges::join_view<_Vp>::end() [with _Vp = std::ranges::transform_view<std::ranges::subrange<std::counted_iterator<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*, std::vector<std::__cxx11::basic_string<char> > > >, std::default_sentinel_t, std::ranges::subrange_kind::sized>, std::identity>]’
/home/jwakely/src/gcc/build10/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/range_access.h:419:26:   required from ‘constexpr auto std::ranges::__cust_access::_End::operator()(_Tp&&) const [with _Tp = std::ranges::join_view<std::ranges::transform_view<std::ranges::subrange<std::counted_iterator<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*, std::vector<std::__cxx11::basic_string<char> > > >, std::default_sentinel_t, std::ranges::subrange_kind::sized>, std::identity> >&]’
/home/jwakely/src/gcc/build10/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/range_access.h:865:13:   required from here
/home/jwakely/src/gcc/build10/x86_64-pc-linux-gnu/libstdc++-v3/include/ranges:112:16: error: static assertion failed
  112 |  static_assert(view<_Derived>);
      |                ^~~~~~~~~~~~~~
/home/jwakely/src/gcc/build10/x86_64-pc-linux-gnu/libstdc++-v3/include/ranges: In instantiation of ‘constexpr _Derived& std::ranges::view_interface<_Derived>::_M_derived() [with _Derived = std::ranges::join_view<std::ranges::transform_view<std::ranges::subrange<std::counted_iterator<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*, std::vector<std::__cxx11::basic_string<char> > > >, std::default_sentinel_t, std::ranges::subrange_kind::sized>, std::identity> >]’:
/home/jwakely/src/gcc/build10/x86_64-pc-linux-gnu/libstdc++-v3/include/ranges:126:67:   required from ‘constexpr std::ranges::view_interface<_Derived>::operator bool() requires requires{std::ranges::__cust::empty(((std::ranges::view_interface<_Derived>*)this)->std::ranges::view_interface<_Derived>::_M_derived()());} [with _Derived = std::ranges::join_view<std::ranges::transform_view<std::ranges::subrange<std::counted_iterator<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*, std::vector<std::__cxx11::basic_string<char> > > >, std::default_sentinel_t, std::ranges::subrange_kind::sized>, std::identity> >]’
/home/jwakely/src/gcc/build10/x86_64-pc-linux-gnu/libstdc++-v3/include/ranges:2673:56:   required from ‘constexpr auto std::ranges::join_view<_Vp>::end() [with _Vp = std::ranges::transform_view<std::ranges::subrange<std::counted_iterator<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*, std::vector<std::__cxx11::basic_string<char> > > >, std::default_sentinel_t, std::ranges::subrange_kind::sized>, std::identity>]’
/home/jwakely/src/gcc/build10/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/range_access.h:419:26:   required from ‘constexpr auto std::ranges::__cust_access::_End::operator()(_Tp&&) const [with _Tp = std::ranges::join_view<std::ranges::transform_view<std::ranges::subrange<std::counted_iterator<__gnu_cxx::__normal_iterator<std::__cxx11::basic_string<char>*, std::vector<std::__cxx11::basic_string<char> > > >, std::default_sentinel_t, std::ranges::subrange_kind::sized>, std::identity> >&]’
/home/jwakely/src/gcc/build10/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/range_access.h:865:13:   required from here
/home/jwakely/src/gcc/build10/x86_64-pc-linux-gnu/libstdc++-v3/include/ranges:105:16: error: static assertion failed
  105 |  static_assert(view<_Derived>);
      |                ^~~~~~~~~~~~~~
g++: error: during ‘-fcompare-debug’ recompilation
g++: error: /tmp/join-good.ii: ‘-fcompare-debug’ failure (length)
Comment 1 Jonathan Wakely 2020-09-21 19:11:17 UTC
Removing the [10 Regression] marker, as the same code fails even with 10.1.0 (and depends on C++20 features that aren't in gcc-9 so I can't test it there).

It does compile OK on trunk though.
Comment 2 Patrick Palka 2020-09-21 19:34:43 UTC
Hmm, I suspect this might essentially be a dup of PR c++/94038 / PR libstdc++/93978.
Comment 3 Jonathan Wakely 2020-09-21 20:29:33 UTC
Yes, that seems likely.