coroutines: Improve diagnostics for one allocator case.
authorIain Sandoe <iain@sandoe.co.uk>
Sat, 27 Jun 2020 07:54:39 +0000 (08:54 +0100)
committerIain Sandoe <iain@sandoe.co.uk>
Sat, 27 Jun 2020 08:37:43 +0000 (09:37 +0100)
commit9c5ca11a33fa91345fe813d449ddc4a821fc72d5
treeac0363693e1e0cdd789ced435fc875c1cd518cbd
parent212475e5757fe3335cba30c9c3eec1707ac0c271
coroutines: Improve diagnostics for one allocator case.

If the user provides operator new and that is noexcept, this
implies that it can fail with a null return.  At that point, we expect
to be able to call get_return_object_on_allocation_failure().

This diagnoses the case where such an operator new has been
provided, but the g-r-o-o-a-f is either missing or unusable.

gcc/cp/ChangeLog:

* coroutines.cc (morph_fn_to_coro): Diagnose unavailable
get_return_object_on_allocation_failure.

gcc/testsuite/ChangeLog:

* g++.dg/coroutines/coro-bad-grooaf-01-grooaf-expected.C: New test.
gcc/cp/coroutines.cc
gcc/testsuite/g++.dg/coroutines/coro-bad-grooaf-01-grooaf-expected.C [new file with mode: 0644]