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

            Bug ID: 95591
           Summary: [coroutines] ICE when co_yielding string literal from
                    generator coroutine
           Product: gcc
           Version: 10.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: lewissbaker.opensource at gmail dot com
  Target Milestone: ---

Build the following code sample using GCC trunk.
Command-line flags: -std=c++2a -fcoroutines

----------
#include <coroutine>

using namespace std;

struct generator {
    struct promise_type {
        generator get_return_object();
        void return_void();
        void unhandled_exception();
        suspend_always initial_suspend();
        suspend_always final_suspend();

        template<typename Arg>
        suspend_always yield_value(Arg&&) {
            return {};
        }
    };
};


generator x() {
    co_yield "foo";
}
----------


Fails with following error:

<source>: In function 'generator x()':
<source>:23:1: internal compiler error: in captures_temporary, at
cp/coroutines.cc:2773
   23 | }
      | ^

See https://godbolt.org/z/UUbcKQ

Reply via email to