https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78898
Bug ID: 78898 Summary: [7 Regression] ICE: in get_template_base, at cp/pt.c:19665 Product: gcc Version: 7.0 Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: trippels at gcc dot gnu.org CC: jason at gcc dot gnu.org Target Milestone: --- A very recent regression: % cat nsIconChannel.ii struct A { template <class T> A(T); template <template <typename> class SmartPtr> A(SmartPtr<int>) { A(0); } }; % g++ -c nsIconChannel.ii nsIconChannel.ii: In substitution of ‘template<template<class> class SmartPtr> A::A(SmartPtr<int>) [with SmartPtr = <missing>]’: nsIconChannel.ii:3:68: required from here nsIconChannel.ii:3:68: internal compiler error: in get_template_base, at cp/pt.c:19665 template <template <typename> class SmartPtr> A(SmartPtr<int>) { A(0); } ^~~~ 0x10166603 get_template_base ../../gcc/gcc/cp/pt.c:19665 0x102a97f7 unify ../../gcc/gcc/cp/pt.c:20305 0x102aed5f unify_one_argument ../../gcc/gcc/cp/pt.c:18901 0x102b180b type_unification_real ../../gcc/gcc/cp/pt.c:19022 0x102b459b fn_type_unification(tree_node*, tree_node*, tree_node*, tree_node* const*, unsigned int, tree_node*, unification_kind_t, int, bool, bool) ../../gcc/gcc/cp/pt.c:18412 0x101ebc6b add_template_candidate_real ../../gcc/gcc/cp/call.c:3168 0x101ecbaf add_template_candidate ../../gcc/gcc/cp/call.c:3246 0x101ecbaf add_candidates ../../gcc/gcc/cp/call.c:5481 0x101e7a9b build_user_type_conversion_1 ../../gcc/gcc/cp/call.c:3795 0x101e82e3 implicit_conversion ../../gcc/gcc/cp/call.c:1898 0x101e9c8f reference_binding ../../gcc/gcc/cp/call.c:1746 0x101e8593 implicit_conversion ../../gcc/gcc/cp/call.c:1837 0x101eaecf add_function_candidate ../../gcc/gcc/cp/call.c:2191 0x101ecbe7 add_candidates ../../gcc/gcc/cp/call.c:5491 0x101ed863 build_new_method_call_1 ../../gcc/gcc/cp/call.c:8656 0x101ed863 build_new_method_call(tree_node*, tree_node*, vec<tree_node*, va_gc, vl_embed>**, tree_node*, int, tree_node**, int) ../../gcc/gcc/cp/call.c:8856 0x101ef2af build_special_member_call(tree_node*, tree_node*, vec<tree_node*, va_gc, vl_embed>**, tree_node*, int, int) ../../gcc/gcc/cp/call.c:8387 0x101f2e67 perform_direct_initialization_if_possible(tree_node*, tree_node*, bool, int) ../../gcc/gcc/cp/call.c:10091 0x103b4e53 build_static_cast_1 ../../gcc/gcc/cp/typeck.c:6795 0x103b6597 cp_build_c_cast(tree_node*, t