https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92012

            Bug ID: 92012
           Summary: internal compiler error while using range v3
           Product: gcc
           Version: 9.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: voivoid at mail dot ru
  Target Milestone: ---

Created attachment 47004
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=47004&action=edit
preprocessed source

Hi!

There is an internal compiler error while trying to compile the attached
preprocessed file.


gcc (GCC) 9.2.0

Linux 5.3.4-arch1-1-ARCH #1 SMP PREEMPT Sat Oct 5 13:44:11 UTC 2019 x86_64
GNU/Linux


compile with:
g++ -fconcepts -std=c++17 ./testcase.ii


output:
./testcase.ii: In substitution of 'template<class R> static constexpr
ranges::_size_::fn::non_member_size_t<R> ranges::_size_::fn::impl_(R&&, long
int) requires  integral<decltype(+ranges::_size_::size((declval<R>)()))> and
!(disable_sized_range<typename std::remove_cv<typename
std::remove_reference::type>::uncvref_t>) [with R = const
ranges::ref_view<const
std::unordered_map<std::pair<std::__cxx11::basic_string<char>,
std::__cxx11::basic_string<char> >, int,
boost::hash<std::pair<std::__cxx11::basic_string<char>,
std::__cxx11::basic_string<char> > >, {anonymous}::NeighboursMapCmp> >&]':
./testcase.ii:98976:42:   required by substitution of 'template<class R>
constexpr decltype (ranges::_size_::fn::impl_((R&&)(r), 0))
ranges::_size_::fn::operator()(R&&) const [with R = const
ranges::ref_view<const
std::unordered_map<std::pair<std::__cxx11::basic_string<char>,
std::__cxx11::basic_string<char> >, int,
boost::hash<std::pair<std::__cxx11::basic_string<char>,
std::__cxx11::basic_string<char> > >, {anonymous}::NeighboursMapCmp> >&]'
./testcase.ii:99269:101:   required by substitution of 'template<class
_Container> constexpr decltype (__cont.size()) std::size(const _Container&)
[with _Container = ranges::transform_view<ranges::ref_view<const
std::unordered_map<std::pair<std::__cxx11::basic_string<char>,
std::__cxx11::basic_string<char> >, int,
boost::hash<std::pair<std::__cxx11::basic_string<char>,
std::__cxx11::basic_string<char> > >, {anonymous}::NeighboursMapCmp> >,
ranges::detail::get_first>]'
./testcase.ii:98941:53:   required by substitution of 'template<class R> using
non_member_size_t = decltype (+ ranges::_size_::size(declval<R>())) [with R =
const ranges::transform_view<ranges::ref_view<const
std::unordered_map<std::pair<std::__cxx11::basic_string<char>,
std::__cxx11::basic_string<char> >, int,
boost::hash<std::pair<std::__cxx11::basic_string<char>,
std::__cxx11::basic_string<char> > >, {anonymous}::NeighboursMapCmp> >,
ranges::detail::get_first>&]'
./testcase.ii:98959:35:   required by substitution of 'template<class R> static
constexpr ranges::_size_::fn::non_member_size_t<R>
ranges::_size_::fn::impl_(R&&, long int) requires 
integral<decltype(+ranges::_size_::size((declval<R>)()))> and
!(disable_sized_range<typename std::remove_cv<typename
std::remove_reference::type>::uncvref_t>) [with R = const
ranges::transform_view<ranges::ref_view<const
std::unordered_map<std::pair<std::__cxx11::basic_string<char>,
std::__cxx11::basic_string<char> >, int,
boost::hash<std::pair<std::__cxx11::basic_string<char>,
std::__cxx11::basic_string<char> > >, {anonymous}::NeighboursMapCmp> >,
ranges::detail::get_first>&]'
./testcase.ii:98976:42:   required by substitution of 'template<class R>
constexpr decltype (ranges::_size_::fn::impl_((R&&)(r), 0))
ranges::_size_::fn::operator()(R&&) const [with R = const
ranges::transform_view<ranges::ref_view<const
std::unordered_map<std::pair<std::__cxx11::basic_string<char>,
std::__cxx11::basic_string<char> >, int,
boost::hash<std::pair<std::__cxx11::basic_string<char>,
std::__cxx11::basic_string<char> > >, {anonymous}::NeighboursMapCmp> >,
ranges::detail::get_first>&]'
./testcase.ii:99158:47:   [ skipping 15 instantiation contexts, use
-ftemplate-backtrace-limit=0 to disable ]
./testcase.ii:98941:53:   required by substitution of 'template<class R> using
non_member_size_t = decltype (+ ranges::_size_::size(declval<R>())) [with R =
ranges::transform_view<ranges::transform_view<ranges::ref_view<const
std::unordered_map<std::pair<std::__cxx11::basic_string<char>,
std::__cxx11::basic_string<char> >, int,
boost::hash<std::pair<std::__cxx11::basic_string<char>,
std::__cxx11::basic_string<char> > >, {anonymous}::NeighboursMapCmp> >,
ranges::detail::get_first>, std::__cxx11::basic_string<char>
std::pair<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>
>::*>&]'
./testcase.ii:98959:35:   required by substitution of 'template<class R> static
constexpr ranges::_size_::fn::non_member_size_t<R>
ranges::_size_::fn::impl_(R&&, long int) requires 
integral<decltype(+ranges::_size_::size((declval<R>)()))> and
!(disable_sized_range<typename std::remove_cv<typename
std::remove_reference::type>::uncvref_t>) [with R =
ranges::transform_view<ranges::transform_view<ranges::ref_view<const
std::unordered_map<std::pair<std::__cxx11::basic_string<char>,
std::__cxx11::basic_string<char> >, int,
boost::hash<std::pair<std::__cxx11::basic_string<char>,
std::__cxx11::basic_string<char> > >, {anonymous}::NeighboursMapCmp> >,
ranges::detail::get_first>, std::__cxx11::basic_string<char>
std::pair<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>
>::*>&]'
./testcase.ii:98976:42:   required by substitution of 'template<class R>
constexpr decltype (ranges::_size_::fn::impl_((R&&)(r), 0))
ranges::_size_::fn::operator()(R&&) const [with R =
ranges::transform_view<ranges::transform_view<ranges::ref_view<const
std::unordered_map<std::pair<std::__cxx11::basic_string<char>,
std::__cxx11::basic_string<char> >, int,
boost::hash<std::pair<std::__cxx11::basic_string<char>,
std::__cxx11::basic_string<char> > >, {anonymous}::NeighboursMapCmp> >,
ranges::detail::get_first>, std::__cxx11::basic_string<char>
std::pair<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>
>::*>&]'
./testcase.ii:99269:101:   required from
'ranges::detail::to_container::fn<MetaFn>::container_t<Rng>
ranges::detail::to_container::fn<MetaFn>::operator()(Rng&&) const requires 
input_range<Rng> and convertible_to_cont_cont<Rng, typename Pred::invoke> [with
Rng = ranges::transform_view<ranges::transform_view<ranges::ref_view<const
std::unordered_map<std::pair<std::__cxx11::basic_string<char>,
std::__cxx11::basic_string<char> >, int,
boost::hash<std::pair<std::__cxx11::basic_string<char>,
std::__cxx11::basic_string<char> > >, {anonymous}::NeighboursMapCmp> >,
ranges::detail::get_first>, std::__cxx11::basic_string<char>
std::pair<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>
>::*>; ToContainer = ranges::detail::from_range<std::vector>;
ranges::detail::to_container::fn<MetaFn>::container_t<Rng> =
std::vector<std::__cxx11::basic_string<char> >]'
./testcase.ii:103467:46:   required from 'constexpr auto
ranges::detail::to_container_closure_base_ns::operator|(Rng&&,
ranges::detail::to_container::closure<MetaFn, Fn>) [with Rng =
ranges::transform_view<ranges::transform_view<ranges::ref_view<const
std::unordered_map<std::pair<std::__cxx11::basic_string<char>,
std::__cxx11::basic_string<char> >, int,
boost::hash<std::pair<std::__cxx11::basic_string<char>,
std::__cxx11::basic_string<char> > >, {anonymous}::NeighboursMapCmp> >,
ranges::detail::get_first>, std::__cxx11::basic_string<char>
std::pair<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>
>::*>; MetaFn = ranges::detail::from_range<std::vector>; Fn =
ranges::detail::to_container::fn<ranges::detail::from_range<std::vector> >]'
./testcase.ii:115455:106:   required from here
./testcase.ii:98976:42: internal compiler error: Segmentation fault
98976 |                     -> decltype(fn::impl_((R &&) r, 0))
      |                                 ~~~~~~~~~^~~~~~~~~~~~~
Please submit a full bug report,
with preprocessed source if appropriate.
See <https://bugs.archlinux.org/> for instructions.

Reply via email to