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

            Bug ID: 92556
           Summary: ICE if using dependent name inside lambda expression
                    in simple-requirement
           Product: gcc
           Version: 10.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: boostcpp at gmail dot com
  Target Milestone: ---

This code produced ICE on GCC 10 2019-11-12.

template < typename T >
    requires requires
{
    // ICE
    []{ T::value ; } ;
}
void f()
{ }

struct S { inline static int value = 0 ; } ;

int main ()
{
    // ill-formed.
    f< int >() ;
    // should be well-formed?
    f< S >() ;
}


https://wandbox.org/permlink/cIj1qRiKzEh9ZYfw

If my understanding on P0315r4 is right, f<int> is ill-formed, and f<S> is
well-formed.

GCC messages.

prog.cc: In lambda function:
prog.cc:5:9: internal compiler error: in dependent_type_p, at cp/pt.c:25933
    5 |     []{ T::value ; } ;
      |         ^
0x5a50dc dependent_type_p(tree_node*)
        ../../source/gcc/cp/pt.c:25933
0x7062e7 dependent_scope_p(tree_node*)
        ../../source/gcc/cp/pt.c:25968
0x7062e7 tsubst_qualified_id
        ../../source/gcc/cp/pt.c:15852
0x6e3633 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool,
bool)
        ../../source/gcc/cp/pt.c:19081
0x6ec286 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool,
bool)
        ../../source/gcc/cp/pt.c:18753
0x6ec286 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
        ../../source/gcc/cp/pt.c:18411
0x6eb71b tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
        ../../source/gcc/cp/pt.c:17497
0x6eb71b tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
        ../../source/gcc/cp/pt.c:17526
0x6eacf9 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
        ../../source/gcc/cp/pt.c:17497
0x6eacf9 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
        ../../source/gcc/cp/pt.c:17814
0x6eacf9 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
        ../../source/gcc/cp/pt.c:17497
0x6eacf9 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
        ../../source/gcc/cp/pt.c:17814
0x7018e5 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
        ../../source/gcc/cp/pt.c:17497
0x7018e5 tsubst_lambda_expr(tree_node*, tree_node*, int, tree_node*)
        ../../source/gcc/cp/pt.c:18707
0x6e56c3 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool,
bool)
        ../../source/gcc/cp/pt.c:20099
0x6ec286 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool,
bool)
        ../../source/gcc/cp/pt.c:18753
0x6ec286 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
        ../../source/gcc/cp/pt.c:18411
0x61ef93 tsubst_requires_expr(tree_node*, tree_node*, int, tree_node*)
        ../../source/gcc/cp/constraint.cc:1818
0x6e4e49 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool,
bool)
        ../../source/gcc/cp/pt.c:20130
0x6ec286 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool,
bool)
        ../../source/gcc/cp/pt.c:18753
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.

Reply via email to