The implementation of return value optimization in D51741 turns
co_return value;
which is essentially
__promise.return_value(value);
into
__promise.return_value(decltype<value>(std::move(value)));
instead of
__promise.return_value(std::move(value));
Instead of doing a copy/move initialization, which is only required for
regular return statements, we just cast to an xvalue reference when we
can consume an object.
Also simplifies the test: some flags aren't needed, neither is main.
Instead we now check that no move constructor is emitted in certain
cases. (That is, we actually delete the move constructor.)