https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101273
Bug ID: 101273 Summary: d: missed RVO optimization with non-pod structs Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: d Assignee: ibuclaw at gdcproject dot org Reporter: ibuclaw at gdcproject dot org Target Milestone: --- It looks like fixing PR d/100882 introduced a small regression: --- struct S { int x; S *impl; this(int x) { this.x = x; this.impl = &this; } ~this() { } } S makeS() { return S(42); } S nrvo() { S ret = S(2); return ret; } S rvo() { return makeS(); } void main() { auto a1 = nrvo(); assert(&a1 is a1.impl); auto b1 = rvo(); assert(&b1 is b1.impl); return; }