https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101995
--- Comment #16 from Richard Earnshaw <rearnsha at gcc dot gnu.org> --- Still present. Perhaps more significantly (and possibly related) class x { public: x (); int func (); private: int a; }; int g () { x b; return b.func(); } generates: g(): push {lr} sub sp, sp, #12 add r0, sp, #4 bl x::x() [complete object constructor] add r0, sp, #4 // Redundant - ABI returns 'this' from a constructor bl x::func() add sp, sp, #12 pop {pc}