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

H.J. Lu <hjl.tools at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|---                         |16.0

--- Comment #12 from H.J. Lu <hjl.tools at gmail dot com> ---
(In reply to Iain Sandoe from comment #5)
> well .. the visible difference in gimple, but this is code outside of the
> coroutines changes (i.e. just a bit of regular C++).
> 
> However, it does seem we create the return object correctly .. and then
> return an empty one.  We seem to be failing to do copy elision.
> 

On x32, OptionalPromiseReturn is 16 bytes, which is returned in 2 registers.
You can't assume that copy elision will happen.  You need to prepare for it.

Reply via email to