r = (char *) L"abcd\0efg";
if (__builtin_object_size (r + 2, 3) != sizeof (L"abcd\0efg") - 2)
abort ();
+ /* Prevent DSE from removing calls that prevent bad combining of
+ addresses and offsets. */
+ asm volatile ("" : : "g" (&a));
}
size_t l1 = 1;
*by_clobber_p = false;
defs.unordered_remove (i);
}
+ /* If the path ends here we do not need to process it further.
+ This for example happens with calls to noreturn functions. */
+ else if (gimple_code (def) != GIMPLE_PHI
+ && has_zero_uses (gimple_vdef (def)))
+ {
+ /* But if the store is to global memory it is definitely
+ not dead. */
+ if (ref_may_alias_global_p (ref))
+ return DSE_STORE_LIVE;
+ defs.unordered_remove (i);
+ }
/* In addition to kills we can remove defs whose only use
is another def in defs. That can only ever be PHIs of which
we track a single for simplicity reasons (we fail for multiple