This is a series of patches that addresses the majority of the open
PRs related to the coroutine ramp function.

It is presented as a series because the actual bug fixes depend on
some preparatory patches (which are also used to resolve issues with
other PR fixes - e.g. Arsen's fix for PR109867).  The series has been
tested incrementally against the GCC testsuite, cppcoro and the folly
coroutines tests.

-----

Iain Sandoe (9):
  c++, coroutines: Split the ramp build into a separate function.
  c++, coroutines: Separate the analysis, ramp and outlined function
    synthesis.
  c++, coroutines: Separate allocator work from the ramp body build.
  c++, coroutines: Fix handling of early exceptions [PR113773].
  c++, coroutines: Only allow void get_return_object if the ramp is void
    [PR100476].
  c++, coroutines: Allow convertible get_return_on_allocation_fail
    [PR109682].
  c++, coroutines: Fix ordering of return object conversions [PR115908].
  c++, coroutines: Rework handling of throwing_cleanups [PR102051].
  c++, coroutines: Look through initial_await target exprs [PR110635].

 gcc/cp/coroutines.cc                          | 1391 ++++++++---------
 gcc/cp/coroutines.h                           |  132 ++
 gcc/cp/cp-tree.h                              |    1 -
 gcc/cp/decl.cc                                |   80 +-
 .../coro-bad-gro-00-class-gro-scalar-return.C |    4 +-
 .../coro-bad-gro-01-void-gro-non-class-coro.C |    4 +-
 .../coroutines/coro-bad-grooaf-00-static.C    |    6 +-
 gcc/testsuite/g++.dg/coroutines/pr102051.C    |   16 +
 gcc/testsuite/g++.dg/coroutines/pr102489.C    |    2 +-
 gcc/testsuite/g++.dg/coroutines/pr103868.C    |    2 +-
 gcc/testsuite/g++.dg/coroutines/pr109682.C    |   28 +
 gcc/testsuite/g++.dg/coroutines/pr110635.C    |   72 +
 gcc/testsuite/g++.dg/coroutines/pr115908.C    |   75 +
 .../g++.dg/coroutines/pr94879-folly-1.C       |    3 +-
 .../g++.dg/coroutines/pr94883-folly-2.C       |   39 +-
 gcc/testsuite/g++.dg/coroutines/pr96749-2.C   |    2 +-
 .../g++.dg/coroutines/ramp-return-b.C         |    8 +-
 .../g++.dg/coroutines/torture/pr113773.C      |   66 +
 18 files changed, 1135 insertions(+), 796 deletions(-)
 create mode 100644 gcc/cp/coroutines.h
 create mode 100644 gcc/testsuite/g++.dg/coroutines/pr102051.C
 create mode 100644 gcc/testsuite/g++.dg/coroutines/pr109682.C
 create mode 100644 gcc/testsuite/g++.dg/coroutines/pr110635.C
 create mode 100644 gcc/testsuite/g++.dg/coroutines/pr115908.C
 create mode 100644 gcc/testsuite/g++.dg/coroutines/torture/pr113773.C

-- 
2.39.2 (Apple Git-143)

Reply via email to