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());
}
//////////////////////////////////////////////////////////////

Reply via email to