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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |wrong-code
           Priority|P3                          |P1
             Status|UNCONFIRMED                 |ASSIGNED
   Last reconfirmed|                            |2020-01-21
           Assignee|unassigned at gcc dot gnu.org      |rguenth at gcc dot 
gnu.org
   Target Milestone|---                         |10.0
     Ever confirmed|0                           |1

--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
Mine.  The ultimate reason is the new partial def support and it's
"conservative" use of alias-set zero.  But in the end the way we validate
redundant store removal is very fragile.  With VN what we can easily prove is
that for a store

   MEM = ...;

the memory contents before the store are the same as after the store.  The
way we do this is that we could replace the above with

   MEM = MEM-using-alias-set-zero;

now to be able to elide the store we have to prove the store does not change
the dynamic type in a way affecting dependence analysis against earlier
and later loads and stores.

For the particular testcase the piecewise stores can be disambiguated
against the later load which now picks up the earlier store to l.

Reply via email to