[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