https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106977
--- Comment #13 from ibuclaw at gcc dot gnu.org --- Confirmed, D is doing NRVO return whereas C++ isn't. gdc-11 codegen of the `visible` method: --- struct Visibility visible (struct AggregateDeclaration * const this) { return <retval> = this->visibility; } --- vs. gdc-mainline --- struct Visibility visible (struct AggregateDeclaration * const this) { <retval> = this->visibility; return <retval>; } ---