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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
     Ever confirmed|0                           |1
             Status|UNCONFIRMED                 |NEW
                 CC|                            |rguenth at gcc dot gnu.org
          Component|c++                         |tree-optimization
           Keywords|                            |alias, missed-optimization
   Last reconfirmed|                            |2020-10-19

--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
In GCCs memory model x and y can still point to the same memory, the only
thing that hints at this not being the case is the load from x at the
--x; statement but we're eliminating this load (using TBAA) with the
store from the ++x statement which means we get to see (at the store
elimination phase)

  int tem = x;
  y = 1;
  x = tem;

and here the store to x is necessary because x and y may now point
to the same storage, each ending lifetime of the int/float object
eventually live previously at the location.

So yes, before eliminating dead code after eliminating redundancies
we could have seen the store is not necessary (actually we still don't
use the present load to do so).

So, it's a difficult one.  And I believe we have a duplicate report somewhere.

Reply via email to