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