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

Arsen Arsenović <arsen at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|Trying to emulate           |Nesting coroutine
                   |views::concat with          |definitions (e.g. via a
                   |std::generator gives ICE on |lambda or a template
                   |co_yield: "internal         |expansion) can ICE the
                   |compiler error: in          |compiler
                   |canonicalize_component_ref, |
                   |at gimplify.cc"             |
           Assignee|unassigned at gcc dot gnu.org      |arsen at gcc dot gnu.org
             Status|NEW                         |ASSIGNED

--- Comment #8 from Arsen Arsenović <arsen at gcc dot gnu.org> ---
reduced more:

#include <coroutine>

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

struct not_quite_suspend_never : std::suspend_never
{};

coro
foo ()
{
  co_await std::suspend_never{},
    [] () -> coro { co_return; },
    co_await not_quite_suspend_never{};
}

Reply via email to