Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ICE with Seqan 3.0.2 and Debian's GCC 10.2.0-16 gcc snapshot #2236

Closed
mr-c opened this issue Nov 3, 2020 · 11 comments
Closed

ICE with Seqan 3.0.2 and Debian's GCC 10.2.0-16 gcc snapshot #2236

mr-c opened this issue Nov 3, 2020 · 11 comments
Labels
bug faulty or wrong behaviour of code external bug Bugs that need to fixed upstream by dependencies.

Comments

@mr-c
Copy link
Contributor

mr-c commented Nov 3, 2020

Platform

Description

How to repeat the problem

Build the seqan3 tests as part of making the seqan3 Debian package

Expected behaviour

No errors

Actual behaviour

/build/seqan3-3.0.2+ds/include/seqan3/search/fm_index/bi_fm_index_cursor.hpp:999:38: internal compiler error: in tsubst_decl, at cp/pt.c:14666
[561/570] /usr/lib/ccache/c++ -DSEQAN3_HAS_BZIP2=1 -DSEQAN3_HAS_ZLIB=1 -Ivendor/googletest/googletest/include -I/build/seqan3-3.0.2+ds/test/include -I/build/seqan3-3.0.2+ds/include -isystem /build/seqan3-3.0.2+ds/submodules/sdsl-lite/include -g -O2 -fdebug-prefix-map=/build/seqan3-3.0.2+ds=. -fstack-protector-strong -Wformat -Werror=format-security -fuse-ld=gold -DNDEBUG -O3 -std=c++17 -fconcepts -Wdate-time -D_FORTIFY_SOURCE=2 -pedantic -Wall -Wextra -Werror -pthread -MD -MT search/CMakeFiles/search_scheme_algorithm_test.dir/search_scheme_algorithm_test.cpp.o -MF search/CMakeFiles/search_scheme_algorithm_test.dir/search_scheme_algorithm_test.cpp.o.d -o search/CMakeFiles/search_scheme_algorithm_test.dir/search_scheme_algorithm_test.cpp.o -c /build/seqan3-3.0.2+ds/test/unit/search/search_scheme_algorithm_test.cpp
FAILED: search/CMakeFiles/search_scheme_algorithm_test.dir/search_scheme_algorithm_test.cpp.o 
/usr/lib/ccache/c++ -DSEQAN3_HAS_BZIP2=1 -DSEQAN3_HAS_ZLIB=1 -Ivendor/googletest/googletest/include -I/build/seqan3-3.0.2+ds/test/include -I/build/seqan3-3.0.2+ds/include -isystem /build/seqan3-3.0.2+ds/submodules/sdsl-lite/include -g -O2 -fdebug-prefix-map=/build/seqan3-3.0.2+ds=. -fstack-protector-strong -Wformat -Werror=format-security -fuse-ld=gold -DNDEBUG -O3 -std=c++17 -fconcepts -Wdate-time -D_FORTIFY_SOURCE=2 -pedantic -Wall -Wextra -Werror -pthread -MD -MT search/CMakeFiles/search_scheme_algorithm_test.dir/search_scheme_algorithm_test.cpp.o -MF search/CMakeFiles/search_scheme_algorithm_test.dir/search_scheme_algorithm_test.cpp.o.d -o search/CMakeFiles/search_scheme_algorithm_test.dir/search_scheme_algorithm_test.cpp.o -c /build/seqan3-3.0.2+ds/test/unit/search/search_scheme_algorithm_test.cpp
In file included from /build/seqan3-3.0.2+ds/test/unit/search/helper.hpp:16,
                 from /build/seqan3-3.0.2+ds/test/unit/search/search_scheme_algorithm_test.cpp:11:
/build/seqan3-3.0.2+ds/include/seqan3/search/fm_index/bi_fm_index_cursor.hpp: In instantiation of ‘seqan3::bi_fm_index_cursor::lazy_locate, sdsl::rank_support_v<1, 1>, sdsl::select_support_scan<>, sdsl::select_support_scan<0>, sdsl::byte_tree<> >, 16, 10000000, sdsl::sa_order_sa_sampling<>, sdsl::isa_sampling<>, sdsl::plain_byte_alphabet> > >:: [with auto:45 = long unsigned int]’:
/usr/include/range/v3/functional/invoke.hpp:139:34:   required by substitution of ‘template constexpr decltype ((F&&)(f)((Args&&(ranges::invoke_fn::operator()::args))...)) ranges::invoke_fn::operator()(F&&, Args&& ...) const [with F = seqan3::bi_fm_index_cursor::lazy_locate, sdsl::rank_support_v<1, 1>, sdsl::select_support_scan<>, sdsl::select_support_scan<0>, sdsl::byte_tree<> >, 16, 10000000, sdsl::sa_order_sa_sampling<>, sdsl::isa_sampling<>, sdsl::plain_byte_alphabet> > >::&; Args = {long unsigned int}]’
/usr/include/range/v3/functional/concepts.hpp:36:5:   required from ‘constexpr ranges::transform_view())), Fun> ranges::views::transform_base_fn::operator()(Rng&&, Fun) const [with Rng = ranges::iota_view; Fun = seqan3::bi_fm_index_cursor::lazy_locate, sdsl::rank_support_v<1, 1>, sdsl::select_support_scan<>, sdsl::select_support_scan<0>, sdsl::byte_tree<> >, 16, 10000000, sdsl::sa_order_sa_sampling<>, sdsl::isa_sampling<>, sdsl::plain_byte_alphabet> > >::; decltype (ranges::views::all(declval())) = ranges::iota_view]’
/usr/include/range/v3/functional/invoke.hpp:139:34:   required by substitution of ‘template constexpr decltype ((F&&)(f)((Args&&(ranges::invoke_fn::operator()::args))...)) ranges::invoke_fn::operator()(F&&, Args&& ...) const [with F = const ranges::views::transform_base_fn&; Args = {ranges::iota_view, const seqan3::bi_fm_index_cursor::lazy_locate, sdsl::rank_support_v<1, 1>, sdsl::select_support_scan<>, sdsl::select_support_scan<0>, sdsl::byte_tree<> >, 16, 10000000, sdsl::sa_order_sa_sampling<>, sdsl::isa_sampling<>, sdsl::plain_byte_alphabet> > >::&}]’
/usr/include/range/v3/functional/invoke.hpp:174:24:   required by substitution of ‘template using invoke_result_t = decltype (ranges::invoke(declval(), (declval)()...)) [with Fun = const ranges::views::transform_base_fn&; Args = {ranges::iota_view, const seqan3::bi_fm_index_cursor::lazy_locate, sdsl::rank_support_v<1, 1>, sdsl::select_support_scan<>, sdsl::select_support_scan<0>, sdsl::byte_tree<> >, 16, 10000000, sdsl::sa_order_sa_sampling<>, sdsl::isa_sampling<>, sdsl::plain_byte_alphabet> > >::&}]’
/usr/include/range/v3/functional/bind_back.hpp:113:13:   required by substitution of ‘template constexpr ranges::invoke_result_t::lazy_locate, sdsl::rank_support_v<1, 1>, sdsl::select_support_scan<>, sdsl::select_support_scan<0>, sdsl::byte_tree<> >, 16, 10000000, sdsl::sa_order_sa_sampling<>, sdsl::isa_sampling<>, sdsl::plain_byte_alphabet> > >::&> ranges::detail::bind_back_fn_::lazy_locate, sdsl::rank_support_v<1, 1>, sdsl::select_support_scan<>, sdsl::select_support_scan<0>, sdsl::byte_tree<> >, 16, 10000000, sdsl::sa_order_sa_sampling<>, sdsl::isa_sampling<>, sdsl::plain_byte_alphabet> > >:: >::operator()(CallArgs&& ...) const & [with CallArgs = {ranges::iota_view}]’
/usr/include/range/v3/functional/invoke.hpp:139:34:   [ skipping 2 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
/build/seqan3-3.0.2+ds/include/seqan3/search/fm_index/bi_fm_index_cursor.hpp:999:14:   required from ‘auto seqan3::bi_fm_index_cursor::lazy_locate() const requires (index_t::text_layout_mode) == seqan3::text_layout::single [with index_t = seqan3::bi_fm_index, sdsl::rank_support_v<1, 1>, sdsl::select_support_scan<>, sdsl::select_support_scan<0>, sdsl::byte_tree<> >, 16, 10000000, sdsl::sa_order_sa_sampling<>, sdsl::isa_sampling<>, sdsl::plain_byte_alphabet> >]’
/build/seqan3-3.0.2+ds/include/seqan3/search/fm_index/concept.hpp:179:22:   required from ‘struct seqan3::detail::search_configurator::select_search_result, seqan3::bi_fm_index, sdsl::rank_support_v<1, 1>, sdsl::select_support_scan<>, sdsl::select_support_scan<0>, sdsl::byte_tree<> >, 16, 10000000, sdsl::sa_order_sa_sampling<>, sdsl::isa_sampling<>, sdsl::plain_byte_alphabet> >, long unsigned int>’
/build/seqan3-3.0.2+ds/include/seqan3/search/detail/search_configurator.hpp:171:15:   required from ‘static auto seqan3::detail::search_configurator::configure_algorithm(const configuration_t&, const index_t&) [with query_t = std::pair >; configuration_t = seqan3::configuration; index_t = seqan3::bi_fm_index, sdsl::rank_support_v<1, 1>, sdsl::select_support_scan<>, sdsl::select_support_scan<0>, sdsl::byte_tree<> >, 16, 10000000, sdsl::sa_order_sa_sampling<>, sdsl::isa_sampling<>, sdsl::plain_byte_alphabet> >]’
/build/seqan3-3.0.2+ds/test/unit/search/search_scheme_algorithm_test.cpp:48:110:   required from ‘void search_trivial(const index_t&, const query_t&, seqan3::detail::search_param, delegate_t&&) [with index_t = seqan3::bi_fm_index, sdsl::rank_support_v<1, 1>, sdsl::select_support_scan<>, sdsl::select_support_scan<0>, sdsl::byte_tree<> >, 16, 10000000, sdsl::sa_order_sa_sampling<>, sdsl::isa_sampling<>, sdsl::plain_byte_alphabet> >; query_t = std::vector; delegate_t = test_search_scheme_edit, 1> >::&]’
/build/seqan3-3.0.2+ds/test/unit/search/search_scheme_algorithm_test.cpp:287:31:   required from ‘void test_search_scheme_edit(const search_scheme_t&, size_t, uint64_t) [with search_scheme_t = std::array, 1>; size_t = long unsigned int; uint64_t = long unsigned int]’
/build/seqan3-3.0.2+ds/test/unit/search/search_scheme_algorithm_test.cpp:331:82:   required from here
/build/seqan3-3.0.2+ds/include/seqan3/search/fm_index/bi_fm_index_cursor.hpp:999:38: internal compiler error: in tsubst_decl, at cp/pt.c:14666
  999 |              | std::views::transform([*this, _offset = offset()] (auto sa_pos)
      |                                      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 1000 |                {
      |                ~                      
 1001 |                    return locate_result_value_type{0u, _offset - index->fwd_fm.index[sa_pos]};
      |                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 1002 |                });
      |                ~   
0x6635bc tsubst_decl
	../../src/gcc/cp/pt.c:14666
0xc1b878 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
	../../src/gcc/cp/pt.c:18002
0xc1a8eb tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
	../../src/gcc/cp/pt.c:17900
0xc18c8c tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
	../../src/gcc/cp/pt.c:18219
0xc16c01 instantiate_decl(tree_node*, bool, bool)
	../../src/gcc/cp/pt.c:25824
0xb4b8aa maybe_instantiate_decl
	../../src/gcc/cp/decl2.c:5370
0xb4df60 maybe_instantiate_decl
	../../src/gcc/cp/decl2.c:5555
0xb4df60 mark_used(tree_node*, int)
	../../src/gcc/cp/decl2.c:5581
0xaa0152 build_over_call
	../../src/gcc/cp/call.c:9093
0xaa4fa1 build_op_call_1
	../../src/gcc/cp/call.c:4872
0xaa4fa1 build_op_call(tree_node*, vec**, int)
	../../src/gcc/cp/call.c:4901
0xc5eb5e finish_call_expr(tree_node*, vec**, bool, bool, int)
	../../src/gcc/cp/semantics.c:2689
0xc28f98 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool, bool)
	../../src/gcc/cp/pt.c:20115
0xc2afb4 tsubst(tree_node*, tree_node*, int, tree_node*)
	../../src/gcc/cp/pt.c:15946
0xc357aa tsubst_function_type
	../../src/gcc/cp/pt.c:14932
0xc2abb0 tsubst(tree_node*, tree_node*, int, tree_node*)
	../../src/gcc/cp/pt.c:15753
0xc3963c tsubst_function_decl
	../../src/gcc/cp/pt.c:13787
0xc22f0f tsubst_decl
	../../src/gcc/cp/pt.c:14230
0xc337d9 instantiate_template_1
	../../src/gcc/cp/pt.c:20871
0xc42fcb instantiate_template(tree_node*, tree_node*, int)
	../../src/gcc/cp/pt.c:20928

seqan3_3.0.2+ds-3_amd64.build.txt.gz

ccGx7lnc.out.txt.gz

@mr-c mr-c added the bug faulty or wrong behaviour of code label Nov 3, 2020
@mr-c
Copy link
Contributor Author

mr-c commented Nov 3, 2020

Debian's gcc-10 package in their development distribution is up to "git 20201029 from the gcc-10 branch."

@mr-c
Copy link
Contributor Author

mr-c commented Nov 3, 2020

This ICE is without the patches from #2234 / #2235

@mr-c
Copy link
Contributor Author

mr-c commented Nov 6, 2020

Bug filed with gcc: https://gcc.gnu.org/PR97745 courtesy Matthias Klose

@mr-c
Copy link
Contributor Author

mr-c commented Nov 6, 2020

Using the latest gcc-snapshot (1:20201023-1), the ICE is replaced with a build error

[4/515] /usr/lib/gcc-snapshot/bin/c++ -DSEQAN3_HAS_BZIP2=1 -DSEQAN3_HAS_ZLIB=1 -Ivendor/googletest/googletest/include -I/build/seqan3-3.0.2+ds/test/include -I/build/seqan3-3.0.2+ds/include -isystem /build/seqan3-3.0.2+ds/submodules/sdsl-lite/include -g -O2 -fdebug-prefix-map=/build/seqan3-3.0.2+ds=. -fstack-protector-strong -Wformat -Werror=format-security -fuse-ld=gold -DNDEBUG -O3 -std=c++17 -fconcepts -Wdate-time -D_FORTIFY_SOURCE=2 -pedantic -Wall -Wextra -Werror -pthread -MD -MT alignment/matrix/detail/CMakeFiles/alignment_matrix_column_major_range_test.dir/alignment_matrix_column_major_range_test.cpp.o -MF alignment/matrix/detail/CMakeFiles/alignment_matrix_column_major_range_test.dir/alignment_matrix_column_major_range_test.cpp.o.d -o alignment/matrix/detail/CMakeFiles/alignment_matrix_column_major_range_test.dir/alignment_matrix_column_major_range_test.cpp.o -c /build/seqan3-3.0.2+ds/test/unit/alignment/matrix/detail/alignment_matrix_column_major_range_test.cpp
FAILED: alignment/matrix/detail/CMakeFiles/alignment_matrix_column_major_range_test.dir/alignment_matrix_column_major_range_test.cpp.o 
/usr/lib/gcc-snapshot/bin/c++ -DSEQAN3_HAS_BZIP2=1 -DSEQAN3_HAS_ZLIB=1 -Ivendor/googletest/googletest/include -I/build/seqan3-3.0.2+ds/test/include -I/build/seqan3-3.0.2+ds/include -isystem /build/seqan3-3.0.2+ds/submodules/sdsl-lite/include -g -O2 -fdebug-prefix-map=/build/seqan3-3.0.2+ds=. -fstack-protector-strong -Wformat -Werror=format-security -fuse-ld=gold -DNDEBUG -O3 -std=c++17 -fconcepts -Wdate-time -D_FORTIFY_SOURCE=2 -pedantic -Wall -Wextra -Werror -pthread -MD -MT alignment/matrix/detail/CMakeFiles/alignment_matrix_column_major_range_test.dir/alignment_matrix_column_major_range_test.cpp.o -MF alignment/matrix/detail/CMakeFiles/alignment_matrix_column_major_range_test.dir/alignment_matrix_column_major_range_test.cpp.o.d -o alignment/matrix/detail/CMakeFiles/alignment_matrix_column_major_range_test.dir/alignment_matrix_column_major_range_test.cpp.o -c /build/seqan3-3.0.2+ds/test/unit/alignment/matrix/detail/alignment_matrix_column_major_range_test.cpp
In file included from /usr/include/range/v3/range/concepts.hpp:39,
                 from /usr/include/range/v3/iterator/operations.hpp:23,
                 from /usr/include/range/v3/iterator/insert_iterators.hpp:21,
                 from /build/seqan3-3.0.2+ds/include/seqan3/std/iterator:47,
                 from /build/seqan3-3.0.2+ds/include/seqan3/core/type_traits/iterator.hpp:20,
                 from /build/seqan3-3.0.2+ds/include/seqan3/core/type_traits/range.hpp:20,
                 from /build/seqan3-3.0.2+ds/include/seqan3/alignment/matrix/detail/alignment_matrix_column_major_range_base.hpp:16,
                 from /build/seqan3-3.0.2+ds/test/unit/alignment/matrix/detail/alignment_matrix_column_major_range_test.cpp:12:
/usr/include/range/v3/range/concepts.hpp: In substitution of 'template<bool True>  requires  True && !(has_fixed_size_<Cardinality>) && (forward_range<typename ranges::detail::dependent_<B>::invoke<Derived> >) constexpr bool ranges::view_interface<seqan3::detail::alignment_matrix_column_major_range_base<test_matrix>::alignment_column_type, ranges::unknown>::empty<True>() [with bool True = seqan3::detail::alignment_matrix_column_major_range_base<test_matrix>::alignment_column_type]':
/usr/include/range/v3/range/primitives.hpp:258:86:   required by substitution of 'template<class R> static constexpr decltype ((bool)((R&&)(r).empty())) ranges::_empty_::fn::impl_(R&&, ranges::detail::priority_tag<2>) [with R = const seqan3::detail::alignment_matrix_column_major_range_base<test_matrix>::alignment_column_type&]'
/usr/include/range/v3/range/primitives.hpp:288:42:   required by substitution of 'template<class R> constexpr decltype (ranges::_empty_::fn::impl_((R&&)(r), ranges::detail::priority_tag<2>{})) ranges::_empty_::fn::operator()(R&&) const [with R = const seqan3::detail::alignment_matrix_column_major_range_base<test_matrix>::alignment_column_type&]'
/usr/include/range/v3/view/interface.hpp:81:9:   required by substitution of 'template<bool True>  requires  True && (can_empty_<const typename ranges::detail::dependent_<B>::invoke<Derived> >) constexpr ranges::view_interface<seqan3::detail::alignment_matrix_column_major_range_base<test_matrix>::alignment_column_type, ranges::unknown>::operator bool<True>() const [with bool True = seqan3::detail::alignment_matrix_column_major_range_base<test_matrix>::alignment_column_type]'
/build/seqan3-3.0.2+ds/include/seqan3/alignment/matrix/detail/alignment_matrix_column_major_range_base.hpp:254:39:   required from 'constexpr seqan3::detail::alignment_matrix_column_major_range_base<derived_t>::alignment_column_type::iterator_type seqan3::detail::alignment_matrix_column_major_range_base<derived_t>::alignment_column_type::begin() [with derived_t = test_matrix]'
/usr/include/range/v3/range/access.hpp:116:35:   required from 'static constexpr auto ranges::_begin_::fn::impl_<<anonymous> >::invoke(R&&) [with R = seqan3::detail::alignment_matrix_column_major_range_base<test_matrix>::alignment_column_type&; bool <anonymous> = true]'
/usr/include/range/v3/range/access.hpp:138:50:   required from 'constexpr auto ranges::_begin_::fn::operator()(R&&) const [with R = seqan3::detail::alignment_matrix_column_major_range_base<test_matrix>::alignment_column_type&]'
/usr/include/range/v3/range/access.hpp:699:38:   required by substitution of 'template<class Rng> using range_difference_t = ranges::iter_difference_t<decltype (ranges::_::begin(declval<Rng&>()))> [with Rng = seqan3::detail::alignment_matrix_column_major_range_base<test_matrix>::alignment_column_type]'
/build/seqan3-3.0.2+ds/include/seqan3/alignment/matrix/detail/alignment_matrix_column_major_range_base.hpp:308:15:   required from 'class seqan3::detail::alignment_matrix_column_major_range_base<test_matrix>::iterator_type'
/usr/include/range/v3/range/access.hpp:86:9:   required by substitution of 'template<class R>  requires (_borrowed_range<R>) && ((has_member_begin<R>) || (has_non_member_begin<R>)) constexpr auto ranges::_begin_::fn::operator()(R&&) const [with R = test_matrix&]'
/usr/include/range/v3/range/access.hpp:699:38:   required by substitution of 'template<class Rng> using iterator_t = decltype (ranges::_::begin(declval<Rng&>())) [with Rng = test_matrix]'
/build/seqan3-3.0.2+ds/test/unit/alignment/matrix/detail/alignment_matrix_column_major_range_test.cpp:98:57:   required from here
/usr/include/range/v3/range/access.hpp:138:26: error: exception specification of 'constexpr auto ranges::_begin_::fn::operator()(R&&) const [with R = seqan3::detail::alignment_matrix_column_major_range_base<test_matrix>::alignment_column_type&]' depends on itself
  138 |                 noexcept(noexcept(impl<R>::invoke(r)))
      |                          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/range/v3/range/access.hpp: In substitution of 'template<class Rng> using range_difference_t = ranges::iter_difference_t<decltype (ranges::_::begin(declval<Rng&>()))> [with Rng = seqan3::detail::alignment_matrix_column_major_range_base<test_matrix>::alignment_column_type]':
/build/seqan3-3.0.2+ds/include/seqan3/alignment/matrix/detail/alignment_matrix_column_major_range_base.hpp:308:15:   required from 'class seqan3::detail::alignment_matrix_column_major_range_base<test_matrix>::iterator_type'
/usr/include/range/v3/range/access.hpp:86:9:   required by substitution of 'template<class R>  requires (_borrowed_range<R>) && ((has_member_begin<R>) || (has_non_member_begin<R>)) constexpr auto ranges::_begin_::fn::operator()(R&&) const [with R = test_matrix&]'
/usr/include/range/v3/range/access.hpp:699:38:   required by substitution of 'template<class Rng> using iterator_t = decltype (ranges::_::begin(declval<Rng&>())) [with Rng = test_matrix]'
/build/seqan3-3.0.2+ds/test/unit/alignment/matrix/detail/alignment_matrix_column_major_range_test.cpp:98:57:   required from here
/usr/include/range/v3/range/access.hpp:699:38: error: use of 'constexpr auto ranges::_begin_::fn::operator()(R&&) const [with R = seqan3::detail::alignment_matrix_column_major_range_base<test_matrix>::alignment_column_type&]' before deduction of 'auto'
  699 |     using iterator_t = decltype(begin(std::declval<Rng &>()));
      |                                 ~~~~~^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/range/v3/range/access.hpp: In substitution of 'template<class Rng> using iterator_t = decltype (ranges::_::begin(declval<Rng&>())) [with Rng = test_matrix]':
/build/seqan3-3.0.2+ds/test/unit/alignment/matrix/detail/alignment_matrix_column_major_range_test.cpp:98:57:   required from here
/usr/include/range/v3/range/access.hpp:699:38: error: no match for call to '(const ranges::_begin_::fn) (test_matrix&)'
/usr/include/range/v3/range/access.hpp:125:18: note: candidate: 'template<class R, long unsigned int N> void ranges::_begin_::fn::operator()(R (&&)[N]) const' (deleted)
  125 |             void operator()(R(&&)[N]) const = delete;
      |                  ^~~~~~~~
/usr/include/range/v3/range/access.hpp:125:18: note:   template argument deduction/substitution failed:
/usr/include/range/v3/range/access.hpp:699:38: note:   mismatched types 'R [N]' and 'test_matrix'
  699 |     using iterator_t = decltype(begin(std::declval<Rng &>()));
      |                                 ~~~~~^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/range/v3/range/access.hpp:128:27: note: candidate: 'template<class R, long unsigned int N> constexpr R* ranges::_begin_::fn::operator()(R (&)[N]) const'
  128 |             constexpr R * operator()(R (&array)[N]) const noexcept
      |                           ^~~~~~~~
/usr/include/range/v3/range/access.hpp:128:27: note:   template argument deduction/substitution failed:
/usr/include/range/v3/range/access.hpp:699:38: note:   mismatched types 'R [N]' and 'test_matrix'
  699 |     using iterator_t = decltype(begin(std::declval<Rng &>()));
      |                                 ~~~~~^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/range/v3/range/access.hpp:137:28: note: candidate: 'template<class R>  requires (_borrowed_range<R>) && ((has_member_begin<R>) || (has_non_member_begin<R>)) constexpr auto ranges::_begin_::fn::operator()(R&&) const'
  137 |             constexpr auto operator()(R && r) const //
      |                            ^~~~~~~~
/usr/include/range/v3/range/access.hpp:137:28: note:   substitution of deduced template arguments resulted in errors seen above
/usr/include/range/v3/range/access.hpp:148:13: note: candidate: 'template<class T, class Fn> constexpr decltype (Fn{}(ref.get())) ranges::_begin_::fn::operator()(std::reference_wrapper<_Tp>) const'
  148 |             operator()(std::reference_wrapper<T> ref) const
      |             ^~~~~~~~
/usr/include/range/v3/range/access.hpp:148:13: note:   template argument deduction/substitution failed:
/usr/include/range/v3/range/access.hpp:699:38: note:   'test_matrix' is not derived from 'std::reference_wrapper<_Tp>'
  699 |     using iterator_t = decltype(begin(std::declval<Rng &>()));
      |                                 ~~~~~^~~~~~~~~~~~~~~~~~~~~~~
/usr/include/range/v3/range/access.hpp:159:13: note: candidate: 'template<class T, class Fn> constexpr decltype (Fn{}(ref.get())) ranges::_begin_::fn::operator()(ranges::reference_wrapper<T>) const'
  159 |             operator()(ranges::reference_wrapper<T> ref) const
      |             ^~~~~~~~
/usr/include/range/v3/range/access.hpp:159:13: note:   template argument deduction/substitution failed:
/usr/include/range/v3/range/access.hpp:699:38: note:   'test_matrix' is not derived from 'ranges::reference_wrapper<T>'
  699 |     using iterator_t = decltype(begin(std::declval<Rng &>()));
      |                                 ~~~~~^~~~~~~~~~~~~~~~~~~~~~~
/build/seqan3-3.0.2+ds/test/unit/alignment/matrix/detail/alignment_matrix_column_major_range_test.cpp: In member function 'virtual void alignment_matrix_column_major_range_base_concepts_Test::TestBody()':
/build/seqan3-3.0.2+ds/test/unit/alignment/matrix/detail/alignment_matrix_column_major_range_test.cpp:99:40: error: 'outer_it' was not declared in this scope
   99 |     using column_t = std::iter_value_t<outer_it>;
      |                                        ^~~~~~~~
/build/seqan3-3.0.2+ds/test/unit/alignment/matrix/detail/alignment_matrix_column_major_range_test.cpp:99:48: error: template argument 1 is invalid
   99 |     using column_t = std::iter_value_t<outer_it>;
      |                                                ^
/build/seqan3-3.0.2+ds/test/unit/alignment/matrix/detail/alignment_matrix_column_major_range_test.cpp:100:46: error: 'column_t' was not declared in this scope
  100 |     using inner_it = std::ranges::iterator_t<column_t>;
      |                                              ^~~~~~~~
/build/seqan3-3.0.2+ds/test/unit/alignment/matrix/detail/alignment_matrix_column_major_range_test.cpp:100:54: error: template argument 1 is invalid
  100 |     using inner_it = std::ranges::iterator_t<column_t>;
      |                                                      ^
In file included from /usr/include/gtest/gtest.h:62,
                 from /build/seqan3-3.0.2+ds/test/unit/alignment/matrix/detail/alignment_matrix_column_major_range_test.cpp:8:
/build/seqan3-3.0.2+ds/test/unit/alignment/matrix/detail/alignment_matrix_column_major_range_test.cpp:104:37: error: 'inner_it' was not declared in this scope
  104 |     EXPECT_TRUE(std::input_iterator<inner_it>);
      |                                     ^~~~~~~~
/build/seqan3-3.0.2+ds/test/unit/alignment/matrix/detail/alignment_matrix_column_major_range_test.cpp:104:22: error: template argument 1 is invalid
  104 |     EXPECT_TRUE(std::input_iterator<inner_it>);
      |                      ^~~~~~~~~~~~~~~~~~~~~~~~

@marehr
Copy link
Member

marehr commented Nov 6, 2020

Thank you! Interesting, every time I tried to contact Matthias Klose he never replied, it's good to know that we can contact him.

@rrahn rrahn added the external bug Bugs that need to fixed upstream by dependencies. label Nov 9, 2020
@tillea
Copy link

tillea commented Dec 28, 2020

Any news for this issue?

@marehr
Copy link
Member

marehr commented Dec 30, 2020

Hi @tillea, the original reported issue is a compiler issue https://gcc.gnu.org/PR97745, but as you can see, the bug seems to be already fixed. So from that point it seems to be a problem with the debian gcc version.

@tillea Can you give me more details on what is failing for you? Maybe you have a variant of this problem that isn't reported yet.

@marehr
Copy link
Member

marehr commented Dec 30, 2020

@mr-c Can you remove the -std=c++17 and -fconcepts flag? We recommend using our auto-detection of cmake (which will find -std=c++20) for gcc-10. This may solve the issue.

@marehr
Copy link
Member

marehr commented Dec 30, 2020

I tried a couple of things:

Compiler is g++

compiler version seqan3 version compiler flags did search_scheme_algorithm_test compile? did alignment_matrix_column_major_range_test compile?
10.2.0 3.0.2 -std=17 -fconcepts yes yes
10.2.0 3.0.2 -std=20 yes yes
10.2.1 20201230 (checkout releases/gcc-10 from today) 3.0.2 -std=17 -fconcepts yes yes
10.2.1 20201230 (checkout releases/gcc-10 from today) 3.0.2 -std=20 yes yes
10.2.0 master (fb4c6be) -std=17 -fconcepts yes yes
10.2.0 master (fb4c6be) -std=20 yes yes
10.2.1 20201230 (checkout releases/gcc-10 from today) master (fb4c6be) -std=17 -fconcepts yes yes
10.2.1 20201230 (checkout releases/gcc-10 from today) master (fb4c6be) -std=20 yes yes

gcc-11 is known to fail currently, see seqan/product_backlog#106 for progress.

@mr-c
Copy link
Contributor Author

mr-c commented Dec 30, 2020

Thanks! I'm doing a full build + test run using GCC 10.2.1-3 + seqan3 3.0.2 now

@mr-c
Copy link
Contributor Author

mr-c commented Dec 30, 2020

Yep, gcc 10 works now, thanks!

@mr-c mr-c closed this as completed Dec 30, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug faulty or wrong behaviour of code external bug Bugs that need to fixed upstream by dependencies.
Projects
None yet
Development

No branches or pull requests

4 participants