[Bug c++/66371] New: ICE: canonical types differ for identical types

jamrial at gmail dot com gcc-bugzilla@gcc.gnu.org
Tue Jun 2 02:50:00 GMT 2015


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

            Bug ID: 66371
           Summary: ICE: canonical types differ for identical types
           Product: gcc
           Version: 6.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: jamrial at gmail dot com
  Target Milestone: ---

Created attachment 35674
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=35674&action=edit
Preprocessed source as generated by -freport-bug

GCC 6.0.0 svn 223906

In file included from
/home/jamrial/range-v3/include/range/v3/range_interface.hpp:25:0,
                 from
/home/jamrial/range-v3/include/range/v3/range_facade.hpp:21,
                 from /home/jamrial/range-v3/include/range/v3/core.hpp:21,
                 from /home/jamrial/range-v3/test/container_conversion.cpp:17:
/home/jamrial/range-v3/include/range/v3/to_container.hpp: In instantiation of
‘struct ranges::v3::detail::to_container_fn<meta::v1::always<std::vector<int> >
>’:
/home/jamrial/range-v3/include/range/v3/to_container.hpp:143:62:   required
from ‘Cont ranges::v3::to_(Rng&&) [with Cont = std::vector<int>; Rng =
ranges::v3::take_exactly_view<ranges::v3::view::ints_fn>&; int
_concept_requires_140 = 42; typename std::enable_if<((_concept_requires_140 ==
43) || (ranges::v3::Range<Cont>() &&
ranges::v3::detail::ConvertibleToContainer<Rng, Cont>())), int>::type
<anonymous> = 0]’
/home/jamrial/range-v3/include/range/v3/range_interface.hpp:240:46:   required
from ‘ranges::v3::range_interface<Derived, <anonymous> >::operator Container()
[with Container = std::vector<int>; D =
ranges::v3::take_exactly_view<ranges::v3::view::ints_fn>; Alloc =
std::allocator<int>; int _concept_requires_237 = 42; typename
std::enable_if<((_concept_requires_237 == 43) ||
ranges::v3::detail::ConvertibleToContainer<D, Container>()), int>::type
<anonymous> = 0; Derived =
ranges::v3::take_exactly_view<ranges::v3::view::ints_fn>;
ranges::v3::cardinality Cardinality = (ranges::v3::cardinality)-1]’
/home/jamrial/range-v3/test/container_conversion.cpp:31:52:   required from
here
/home/jamrial/range-v3/include/range/v3/to_container.hpp:74:22: internal
compiler error: canonical types differ for identical types
std::enable_if<((_concept_requires_73 == 43) || ((ranges::v3::Range<T>() &&
ranges::v3::detail::ConvertibleToContainer<Rng, Cont,
ranges::v3::range_common_iterator_t<Rng> >()) &&
ranges::v3::detail::to_container_fn<meta::v1::always<std::vector<int> >
>::ReserveConcept<Cont, Rng>())), int> and
std::enable_if<((_concept_requires_73 == 43) || ((ranges::v3::Range<T>() &&
ranges::v3::detail::ConvertibleToContainer<Rng, Cont,
ranges::v3::range_common_iterator_t<Rng> >()) &&
ranges::v3::detail::to_container_fn<meta::v1::quote<std::vector>
>::ReserveConcept<Cont, Rng>())), int>
                 Cont impl(Rng && rng, std::true_type) const
                      ^
0x738b8e comptypes(tree_node*, tree_node*, int)
        /home/jamrial/gcc-svn/gcc/cp/typeck.c:1423
0x737610 structural_comptypes
        /home/jamrial/gcc-svn/gcc/cp/typeck.c:1338
0x66e122 reduce_template_parm_level
        /home/jamrial/gcc-svn/gcc/cp/pt.c:3704
0x66a120 tsubst(tree_node*, tree_node*, int, tree_node*)
        /home/jamrial/gcc-svn/gcc/cp/pt.c:12155
0x670e50 tsubst_copy
        /home/jamrial/gcc-svn/gcc/cp/pt.c:13054
0x676056 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool,
bool)
        /home/jamrial/gcc-svn/gcc/cp/pt.c:15728
0x65b6b0 tsubst_expr
        /home/jamrial/gcc-svn/gcc/cp/pt.c:14393
0x66bf6b tsubst_template_arg
        /home/jamrial/gcc-svn/gcc/cp/pt.c:9690
0x666a42 tsubst_template_args
        /home/jamrial/gcc-svn/gcc/cp/pt.c:10241
0x666d3a tsubst_template_args
        /home/jamrial/gcc-svn/gcc/cp/pt.c:10201
0x660342 tsubst_decl
        /home/jamrial/gcc-svn/gcc/cp/pt.c:10624
0x669f4e tsubst(tree_node*, tree_node*, int, tree_node*)
        /home/jamrial/gcc-svn/gcc/cp/pt.c:11819
0x68de6b instantiate_class_template_1
        /home/jamrial/gcc-svn/gcc/cp/pt.c:9357
0x68de6b instantiate_class_template(tree_node*)
        /home/jamrial/gcc-svn/gcc/cp/pt.c:9671
0x7336fb complete_type(tree_node*)
        /home/jamrial/gcc-svn/gcc/cp/typeck.c:146
0x7338ef complete_type_or_maybe_complain(tree_node*, tree_node*, int)
        /home/jamrial/gcc-svn/gcc/cp/typeck.c:158
0x7339d9 require_complete_type_sfinae(tree_node*, int)
        /home/jamrial/gcc-svn/gcc/cp/typeck.c:102
0x5ec059 build_cxx_call(tree_node*, int, tree_node**, int)
        /home/jamrial/gcc-svn/gcc/cp/call.c:7652
0x5f1701 build_over_call
        /home/jamrial/gcc-svn/gcc/cp/call.c:7567
0x600471 build_new_function_call(tree_node*, vec<tree_node*, va_gc,
vl_embed>**, bool, int)
        /home/jamrial/gcc-svn/gcc/cp/call.c:4100

New version of the first file reported in pr66067, this time with a different
ICE.


More information about the Gcc-bugs mailing list