https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99459
--- Comment #4 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
So perhaps:
2021-03-08 Jakub Jelinek <ja...@redhat.com>
PR c++/99459
* coroutines.cc (build_co_await): Look through NOP_EXPRs in
build_special_member_call return value to find the CALL_EXPR.
--- gcc/cp/coroutines.cc.jj 2021-03-05 21:51:48.671185716 +0100
+++ gcc/cp/coroutines.cc 2021-03-08 10:53:13.187959339 +0100
@@ -868,6 +868,8 @@ build_co_await (location_t loc, tree a,
= build_special_member_call (a, complete_dtor_identifier,
NULL, a_type, LOOKUP_NORMAL,
tf_none);
+ if (dummy && CONVERT_EXPR_P (dummy))
+ dummy = TREE_OPERAND (dummy, 0);
dummy = dummy ? TREE_OPERAND (CALL_EXPR_FN (dummy), 0)
: NULL_TREE;
if (dummy && coro_diagnose_throwing_fn (dummy))
@@ -1031,6 +1033,8 @@ build_co_await (location_t loc, tree a,
= build_special_member_call (e_proxy, complete_dtor_identifier,
NULL, o_type, LOOKUP_NORMAL,
tf_none);
+ if (dummy && CONVERT_EXPR_P (dummy))
+ dummy = TREE_OPERAND (dummy, 0);
dummy = dummy ? TREE_OPERAND (CALL_EXPR_FN (dummy), 0)
: NULL_TREE;
if (dummy && coro_diagnose_throwing_fn (dummy))
?