http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57303

--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> ---
DSE has

          /* If use_stmt is or might be a nop assignment, e.g. for
             struct { ... } S a, b, *p; ...
             b = a; b = b;
             or
             b = a; b = *p; where p might be &b,
             or
             *p = a; *p = b; where p might be &b,
             or
             *p = *u; *p = *v; where p might be v, then USE_STMT
             acts as a use as well as definition, so store in STMT
             is not dead.  */
          if (stmt != use_stmt
              && ref_maybe_used_by_stmt_p (use_stmt, gimple_assign_lhs (stmt)))
            return;

for this very reason.

Reply via email to