[Bug c++/77448] Incorrect code generation for calling stack object's method
pinskia at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Sep 2 02:01:00 GMT 2016
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77448
Andrew Pinski <pinskia at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |WAITING
Last reconfirmed| |2016-09-02
Ever confirmed|0 |1
--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Why do you think this is incorrect code. This is a called named return value
optimization. See https://en.wikipedia.org/wiki/Return_value_optimization .
This is a way to reduce the number of copy constructors being used.
The reason why it is the first argument is because the return value is passed
via a pointer as the first argument (the rest of the arguments are shifted over
by 1 register); this is the x86_64 ABI (AARCH64 ABI is different and the
pointer would have been passed in via a different register and the arguments
registers would stay the same).
More information about the Gcc-bugs
mailing list