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

--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
So the fix is very easy:
--- gcc/tree-ssa-dse.c.jj       2017-09-29 23:05:40.000000000 +0200
+++ gcc/tree-ssa-dse.c  2017-10-02 10:40:21.962488571 +0200
@@ -577,10 +577,10 @@ dse_classify_store (ao_ref *ref, gimple
          /* If the statement is a use the store is not dead.  */
          else if (ref_maybe_used_by_stmt_p (use_stmt, ref))
            {
-             /* Handle common cases where we can easily build a ao_ref
+             /* Handle common cases where we can easily build an ao_ref
                 structure for USE_STMT and in doing so we find that the
                 references hit non-live bytes and thus can be ignored.  */
-             if (live_bytes && (!gimple_vdef (use_stmt) || !temp))
+             if (byte_tracking_enabled && (!gimple_vdef (use_stmt) || !temp))
                {
                  if (is_gimple_assign (use_stmt))
                    {
But I want to also think about overflows in the case where ref has small size
(otherwise byte_tracking_enabled is false), but use_ref has huge size.

Reply via email to