https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68429
Bug ID: 68429 Summary: [concepts] ICE in in placeholder_extract_concept_and_args, at cp/constraint.cc:1401 Product: gcc Version: 6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: ryan.burn at gmail dot com Target Milestone: --- The below code causes this ICE: bug.cpp: In function ‘int main()’: bug.cpp:19:8: internal compiler error: in placeholder_extract_concept_and_args, at cp/constraint.cc:1401 f(A()); ^ 0x83f181 placeholder_extract_concept_and_args(tree_node*, tree_node*&, tree_node*&) ../../src/gcc/cp/constraint.cc:1399 0x83f6a1 hash_placeholder_constraint(tree_node*) ../../src/gcc/cp/constraint.cc:1472 0x65f310 auto_hash::hash(tree_node*) ../../src/gcc/cp/pt.c:23537 0x65f310 hash_table<auto_hash, xcallocator>::find_slot(tree_node* const&, insert_option) ../../src/gcc/hash-table.h:408 0x65f310 extract_autos_r ../../src/gcc/cp/pt.c:23571 0x664590 for_each_template_parm_r ../../src/gcc/cp/pt.c:8791 0xfa01f2 walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*), void*, hash_set<tree_node*, default_hash_traits<tree_node*> >*, tree_node* (*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*), void*, hash_set<tree_node*, default_hash_traits<tree_node*> >*)) ../../src/gcc/tree.c:11497 0x66409c for_each_template_parm ../../src/gcc/cp/pt.c:8889 0x6658c8 extract_autos ../../src/gcc/cp/pt.c:23599 0x6658c8 do_auto_deduction(tree_node*, tree_node*, tree_node*, int, auto_deduction_context) ../../src/gcc/cp/pt.c:23690 0x840415 satisfy_argument_deduction_constraint ../../src/gcc/cp/constraint.cc:1903 0x840415 satisfy_constraint_1 ../../src/gcc/cp/constraint.cc:2010 0x840493 satisfy_conjunction ../../src/gcc/cp/constraint.cc:1959 0x840493 satisfy_constraint_1 ../../src/gcc/cp/constraint.cc:2019 0x83feed satisfy_parameterized_constraint ../../src/gcc/cp/constraint.cc:1941 0x83feed satisfy_constraint_1 ../../src/gcc/cp/constraint.cc:2016 0x840886 satisfy_constraint ../../src/gcc/cp/constraint.cc:2049 0x8409ea constraints_satisfied_p(tree_node*) ../../src/gcc/cp/constraint.cc:2156 0x60865d add_function_candidate ../../src/gcc/cp/call.c:1994 0x609811 add_template_candidate_real ../../src/gcc/cp/call.c:3118 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <http://gcc.gnu.org/bugs.html> for instructions. ////////////////////////////////////////////////////////////// template <class, class> concept bool C1() { return true; } template <class Expr> concept bool C2() { return requires(Expr expr, decltype(expr.identity) x) { { expr } ->C1<decltype(x)>; }; } void f(C2) {} struct A {}; int main() { f(A()); } //////////////////////////////////////////////////////////////