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

Martin Liška <marxin at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
      Known to fail|                            |10.0
                 CC|                            |jason at gcc dot gnu.org,
                   |                            |marxin at gcc dot gnu.org
           Keywords|                            |ice-on-valid-code
     Ever confirmed|0                           |1
            Summary|ICE while using a concept   |[10 Regression] ICE while
                   |checking for user defined   |using a concept checking
                   |conversion operator         |for user defined conversion
                   |                            |operator since
                   |                            |r10-3735-gcb57504a55015891
      Known to work|                            |9.3.0
   Target Milestone|---                         |10.0
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2020-04-15

--- Comment #1 from Martin Liška <marxin at gcc dot gnu.org> ---
Confirmed, started with r10-3735-gcb57504a55015891.

Reduced test-case:

$ cat pr94597.ii
template <typename b, typename c> concept d = requires(b e) { e.operator c; };
template <typename f, typename g> requires(d<f, g>) bool equal(f, g);
template <typename h> struct i {
  i(h);
  operator h();
};
bool fun() {
  i a(2.0f);
  return equal(a, 3.0f);
}

$ g++ -std=c++2a -fconcepts pr94597.ii -c
pr94597.ii: In instantiation of ‘bool equal(f, g) [with f = i<float>; g =
float]’:
pr94597.ii:9:23:   required from here
pr94597.ii:1:74: internal compiler error: tree check: accessed elt 2 of
‘tree_vec’ with 1 elts in tsubst, at cp/pt.c:15175
    1 | template <typename b, typename c> concept d = requires(b e) {
e.operator c; };
      |                                                              
~~~~~~~~~~~^
0x84239d tree_vec_elt_check_failed(int, int, char const*, int, char const*)
        /home/marxin/Programming/gcc/gcc/tree.c:9928
0x6a6a8b tree_vec_elt_check(tree_node*, int, char const*, int, char const*)
        /home/marxin/Programming/gcc/gcc/tree.h:3508
0x6a6a8b tsubst(tree_node*, tree_node*, int, tree_node*)
        /home/marxin/Programming/gcc/gcc/cp/pt.c:15175
0xab6c3b tsubst_copy
        /home/marxin/Programming/gcc/gcc/cp/pt.c:16821
0xabd7e4 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool,
bool)
        /home/marxin/Programming/gcc/gcc/cp/pt.c:20125
0xab0677 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
        /home/marxin/Programming/gcc/gcc/cp/pt.c:18690
0x982f25 tsubst_valid_expression_requirement
        /home/marxin/Programming/gcc/gcc/cp/constraint.cc:1867
0x982f25 tsubst_simple_requirement
        /home/marxin/Programming/gcc/gcc/cp/constraint.cc:1880
0x982f25 tsubst_requirement
        /home/marxin/Programming/gcc/gcc/cp/constraint.cc:2032
0x982f25 tsubst_requirement_body
        /home/marxin/Programming/gcc/gcc/cp/constraint.cc:2054
0x982f25 tsubst_requires_expr(tree_node*, tree_node*, int, tree_node*)
        /home/marxin/Programming/gcc/gcc/cp/constraint.cc:2170
0xabd8da tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool,
bool)
        /home/marxin/Programming/gcc/gcc/cp/pt.c:20440
0xab0677 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
        /home/marxin/Programming/gcc/gcc/cp/pt.c:18690
0x9829d8 satisfy_atom
        /home/marxin/Programming/gcc/gcc/cp/constraint.cc:2595
0x9829d8 satisfy_constraint_r
        /home/marxin/Programming/gcc/gcc/cp/constraint.cc:2657
0x982dd8 satisfy_constraint
        /home/marxin/Programming/gcc/gcc/cp/constraint.cc:2677
0x983f42 satisfy_declaration_constraints
        /home/marxin/Programming/gcc/gcc/cp/constraint.cc:2776
0x983f42 constraint_satisfaction_value
        /home/marxin/Programming/gcc/gcc/cp/constraint.cc:2812
0x9843fa constraints_satisfied_p(tree_node*)
        /home/marxin/Programming/gcc/gcc/cp/constraint.cc:2846
0x933368 add_function_candidate
        /home/marxin/Programming/gcc/gcc/cp/call.c:2288
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.

$ g++-9 -std=c++2a -fconcepts pr94597.ii -c
[ok]

Reply via email to