https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97639
Bug ID: 97639 Summary: [c++20,-fconcepts-ts] ICE: gcc_assert in tsubst, cp/pt.c:15464 Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: dimitri.gorokhovik at free dot fr Target Milestone: --- The code: template <auto> concept Term = true; template <auto, auto> struct ss {}; template <auto> struct s { template <Term a, Term b> constexpr static auto foo (ss <a, b>); }; constexpr auto g = [] (auto) { return 41; }; constexpr auto r = s <42> {}.foo (ss <g,g> {}); when compiled as: g++ -fconcepts-ts -std=c++20 -o bug-10.o -c bug-10.cpp produces: bug-10.cpp: In substitution of ‘template<auto a, auto b> requires (Term<a>) && (Term<b>) static constexpr auto s<42>::foo<a, b>(ss<a, b>) [with auto a = <missing>; auto b = <missing>]’: bug-10.cpp:10:46: required from here bug-10.cpp:10:46: internal compiler error: in tsubst, at cp/pt.c:15464 10 | constexpr auto r = s <42> {}.foo (ss <g,g> {}); | ^ 0x6b046b tsubst(tree_node*, tree_node*, int, tree_node*) ../../src/gcc/cp/pt.c:15464 0xa66be6 unify ../../src/gcc/cp/pt.c:23443 0xa6689c unify ../../src/gcc/cp/pt.c:23640 0xa64a68 try_class_unification ../../src/gcc/cp/pt.c:22629 0xa65162 unify ../../src/gcc/cp/pt.c:23677 0xa62822 unify_one_argument ../../src/gcc/cp/pt.c:21850 0xa71a23 type_unification_real ../../src/gcc/cp/pt.c:21969 0xa7fe29 fn_type_unification(tree_node*, tree_node*, tree_node*, tree_node* const*, unsigned int, tree_node*, unification_kind_t, int, conversion**, bool, bool) ../../src/gcc/cp/pt.c:21338 0x8d1c3d add_template_candidate_real ../../src/gcc/cp/call.c:3412 0x8d261c add_template_candidate ../../src/gcc/cp/call.c:3497 0x8d261c add_candidates ../../src/gcc/cp/call.c:5910 0x8d8ad4 add_candidates ../../src/gcc/cp/call.c:5825 0x8d8ad4 build_new_method_call_1 ../../src/gcc/cp/call.c:10330 0x8d9d7f build_new_method_call(tree_node*, tree_node*, vec<tree_node*, va_gc, vl_embed>**, tree_node*, int, tree_node**, int) ../../src/gcc/cp/call.c:10537 0xa1305c cp_parser_postfix_expression ../../src/gcc/cp/parser.c:7517 0x9f3c6a cp_parser_binary_expression ../../src/gcc/cp/parser.c:9652 0x9f59fe cp_parser_assignment_expression ../../src/gcc/cp/parser.c:9957 0x9f457d cp_parser_constant_expression ../../src/gcc/cp/parser.c:10251 0x9f4da1 cp_parser_initializer_clause ../../src/gcc/cp/parser.c:23404 0x9f978c cp_parser_initializer ../../src/gcc/cp/parser.c:23342 Please submit a full bug report, GCC version: g++ (GCC) 11.0.0 20201029 (experimental)