[Bug c++/92778] [8/9 regression] ICE: Illegal instruction signal terminated program cc1plus

jason at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu Mar 5 18:47:00 GMT 2020


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

Jason Merrill <jason at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|ice-on-valid-code           |ice-on-invalid-code
             Status|UNCONFIRMED                 |RESOLVED
                 CC|                            |jason at gcc dot gnu.org
         Resolution|---                         |DUPLICATE

--- Comment #7 from Jason Merrill <jason at gcc dot gnu.org> ---
The ICE on linux with GCC 9 is from infinite recursion checking the constraints
on

seqan3::detail::view_translate_single<urng_t>::view_translate_single(rng_t&&,
seqan3::translation_frames = seqan3::translation_frames::FWD_FRAME_0) [with
rng_t =
ranges::reverse_view<seqan3::detail::view_translate_single<ranges::ref_view<std::vector<seqan3::dna5>
> > >; urng_t = ranges::ref_view<std::vector<seqan3::dna5> >]

checking std::ranges::viewable_range<rng_t> for reverse_view involves
checking view_ for reverse_view ->
checking semiregular for reverse_view ->
checking copyable<reverse_view> ->
copy_constructible<reverse_view> ->
move_constructible<reverse_view> ->
__is_constructible(reverse_view,reverse_view) trait
which considers
reverse_view(Rng) with Rng=view_translate_single
which tries to construct a view_translate_single from the reverse_view using
the above constructor, and repeat until we run out of stack.

So, a duplicate of 88395.

Reduced:

template <class T> T&& declval();
template <class T> struct B
{
  B(T);
};
struct A
{
  template <class U>
  requires __is_constructible (U,U)
    A(U&&);
};
int main()
{
  A a(declval<B<A>>());
}

This fails in

*** This bug has been marked as a duplicate of bug 88395 ***


More information about the Gcc-bugs mailing list