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.

Reply via email to