https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103040
--- Comment #7 from Iain Buclaw <ibuclaw at gdcproject dot org> --- (In reply to Jakub Jelinek from comment #6) > One quite visible change is that D has those stmts that clear the vars > before it is constructed, so e.g. in main: > SR.11_24 = 0; > _12 = SR.11_24; > MEM <uint128_t> [(unsigned char * {ref-all})&nrvo] = _12; > nrvo = nrvo101273 (); [return slot optimization] > instead of C++ > nrvo = nrvo101273 (); [return slot optimization] The "this" pointer in D constructors are a reference rather than a pointer, would that be enough to throw it off? Haven't gotten round to finishing build on a11c53985a7080f9bf6143788ccb455dc9b0da21 just yet to see.