https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71258

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Severity|normal                      |enhancement

--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
  _5 = operator new (16);
  MEM[(struct __as_base  &)_5] ={v} {CLOBBER(bob)};
  MEM[(struct model *)_5].D.38294._vptr.concept = &MEM <int (*) ()[5]> [(void
*)&_ZTVN4poly5modelIiEE + 16B];
  MEM[(struct model *)_5]._data = 40;
  _6 = operator new (16);

  <bb 3> [local count: 1073741824]:
  MEM[(struct __as_base  &)_6] ={v} {CLOBBER(bob)};
  MEM[(struct model *)_6].D.41483._vptr.concept = &MEM <int (*) ()[5]> [(void
*)&_ZTVN4poly5modelIfEE + 16B];
  MEM[(struct model *)_6]._data = 2.0e+0;
  _7 = MEM[(struct concept *)_5]._vptr.concept;

Basically the second `operator new` is treated as being able to touch the
pointer that is returned the first `operator new`.

Reply via email to