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

            Bug ID: 102489
           Summary: [12 Regression] ICE in is_this_parameter, at
                    cp/semantics.c:11273
           Product: gcc
           Version: 12.0
            Status: UNCONFIRMED
          Keywords: ice-on-valid-code
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: asolokha at gmx dot com
  Target Milestone: ---

g++-12.0.0-alpha20210919 snapshot (g:32731fa5b0abf092029b8e2be64319b978bda514)
ICEs when compiling the following testcase, reduced from
gcc/testsuite/g++.dg/coroutines/pr95736.C, w/ -O1 -fcoroutines:

#include <coroutine>

struct footask {
  struct promise_type {
    std::suspend_never initial_suspend();
    std::suspend_never final_suspend() noexcept;
    void unhandled_exception();
    void get_return_object();
  };

  std::suspend_always foo;

  footask taskfun() { co_await foo; }
};

% g++-12.0.0 -O1 -fcoroutines -c c3iikget.C
c3iikget.C: In function 'void
footask::taskfun(footask::taskfun()::_ZN7footask7taskfunEv.Frame*)':
c3iikget.C:13:37: internal compiler error: in is_this_parameter, at
cp/semantics.c:11273
   13 |   footask taskfun() { co_await foo; }
      |                                     ^
0x710dd0 is_this_parameter(tree_node*)
       
/var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210919/work/gcc-12-20210919/gcc/cp/semantics.c:11273
0x96f9ec potential_constant_expression_1
       
/var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210919/work/gcc-12-20210919/gcc/cp/constexpr.c:8393
0x970c87 potential_constant_expression_1
       
/var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210919/work/gcc-12-20210919/gcc/cp/constexpr.c:8200
0x971aa6 potential_constant_expression_1(tree_node*, bool, bool, bool, int)
       
/var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210919/work/gcc-12-20210919/gcc/cp/constexpr.c:9062
0x971aa6 is_constant_expression(tree_node*)
       
/var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210919/work/gcc-12-20210919/gcc/cp/constexpr.c:9119
0x971aa6 is_nondependent_constant_expression(tree_node*)
       
/var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210919/work/gcc-12-20210919/gcc/cp/constexpr.c:9156
0x9729ff maybe_constant_value(tree_node*, tree_node*, bool)
       
/var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210919/work/gcc-12-20210919/gcc/cp/constexpr.c:7628
0x9a042d cp_fold
       
/var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210919/work/gcc-12-20210919/gcc/cp/cp-gimplify.c:2656
0x9a0d0c cp_fold_maybe_rvalue(tree_node*, bool)
       
/var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210919/work/gcc-12-20210919/gcc/cp/cp-gimplify.c:2127
0x99ee00 cp_fold
       
/var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210919/work/gcc-12-20210919/gcc/cp/cp-gimplify.c:2361
0x9a0d0c cp_fold_maybe_rvalue(tree_node*, bool)
       
/var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210919/work/gcc-12-20210919/gcc/cp/cp-gimplify.c:2127
0x99f6b0 cp_fold_rvalue(tree_node*)
       
/var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210919/work/gcc-12-20210919/gcc/cp/cp-gimplify.c:2150
0x99f6b0 cp_fold
       
/var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210919/work/gcc-12-20210919/gcc/cp/cp-gimplify.c:2253
0x9a0d0c cp_fold_maybe_rvalue(tree_node*, bool)
       
/var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210919/work/gcc-12-20210919/gcc/cp/cp-gimplify.c:2127
0x99f1ed cp_fold_rvalue(tree_node*)
       
/var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210919/work/gcc-12-20210919/gcc/cp/cp-gimplify.c:2150
0x99f1ed cp_fold
       
/var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210919/work/gcc-12-20210919/gcc/cp/cp-gimplify.c:2509
0x9a06de cp_fold_r
       
/var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210919/work/gcc-12-20210919/gcc/cp/cp-gimplify.c:847
0x146728a walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*,
tree_node* (*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*))
       
/var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210919/work/gcc-12-20210919/gcc/tree.c:11016
0x1467ab8 walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*,
tree_node* (*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*))
       
/var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210919/work/gcc-12-20210919/gcc/tree.c:11132
0x1467ab8 walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*,
tree_node* (*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*))
       
/var/tmp/portage/sys-devel/gcc-12.0.0_alpha20210919/work/gcc-12-20210919/gcc/tree.c:11132

Reply via email to