https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121255
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- I suspect if you fix the first error: ``` <source>: In function 'Generator<int> countdown(int)': <source>:68:16: error: the coroutine promise type 'std::__n4861::__coroutine_traits_impl<Generator<int>, void>::promise_type' {aka 'Generator<int>::promise_type'} declares both 'return_value' and 'return_void' 68 | Generator<int> countdown(int start) { | ^~~~~~~~~ <source>:30:14: note: 'return_void' declared here 30 | void return_void() {} | ^~~~~~~~~~~ <source>:26:14: note: 'return_value' first declared here 26 | void return_value(U&& value) { | ^~~~~~~~~~~~ ``` The ICE will go away.