https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80344
--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> --- I believe this is exposed by inlining this_14(D)->http_ver = Http::ProtocolVersion (); [return slot optimization] as D.148385 ={v} {CLOBBER}; MEM[(struct &)this_14(D) + 4] = D.148385; this_14(D)->http_ver.protocol = 1; this_14(D)->http_ver.major = 1; this_14(D)->http_ver.minor = 1; which is AnyP::ProtocolVersion Http::ProtocolVersion() () { <bb 2> [0.00%]: AnyP::ProtocolVersion::ProtocolVersion (&<retval>, 1, 1, 1); return <retval>; inlined into like AnyP::ProtocolVersion Http::ProtocolVersion() () { struct ProtocolVersion * D.148207; <bb 2> [100.00%]: MEM[(struct &)&<retval>] ={v} {CLOBBER}; <retval>.protocol = 1; <retval>.major = 1; <retval>.minor = 1; _7 = &<retval>; return <retval>; not sure how this ends up happening. Smaller testcase appreciated ;) The above is from 029t.einline vs. 028t.inline_param1.