public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [RFA] [tree-optimization/80576] Handle non-constant sizes in DSE
@ 2019-08-16 18:10 Jeff Law
  2019-08-16 19:55 ` Marc Glisse
  0 siblings, 1 reply; 21+ messages in thread
From: Jeff Law @ 2019-08-16 18:10 UTC (permalink / raw)
  To: gcc-patches


This patch improves our ability to detect dead stores by handling cases
where the size memcpy, memset, strncpy, etc call is not constant.  This
addresses some, but not all, of the issues in 80576.

The key here is when the size is not constant we can make conservative
decisions that still give us a chance to analyze the code for dead stores.

Remember that for dead store elimination, we're trying to prove that
given two stores, the second store overwrites (partially or fully) the
same memory locations as the first store.  That makes the first store
either partially or fully dead.

When we encounter the first store, we set up a bitmap of bytes written
by that store (live_bytes).  We then look at subsequent stores and clear
the appropriate entries in the bitmap.

If the first store has a nonconstant length argument we can use the
range of the length argument (max) and the size of the destination
object to make a conservative estimation of how many bytes are written.

For the second store the conservative thing to do for a non-constant
length is to use the minimum of the range of the length argument.

This doesn't come up a lot in practice.  But it also happens to put some
of the infrastructure in place to handle strcpy and strcpy_chk which are
needed to fully resolve 80576.

Bootstrapped and regression tested on x86, x86_64, ppc64le, ppc64,
ppc32, aarch64, sparc, s390x and probably others.  Also verified that
the tests work on the various *-elf targets in my tester.

OK for the trunk?

Jeff

^ permalink raw reply	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2019-09-16  9:18 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-08-16 18:10 [RFA] [tree-optimization/80576] Handle non-constant sizes in DSE Jeff Law
2019-08-16 19:55 ` Marc Glisse
2019-08-16 20:41   ` Jeff Law
2019-08-16 22:49     ` Martin Sebor
2019-08-22  0:30       ` Jeff Law
2019-08-22 18:50         ` Martin Sebor
2019-08-23 16:50           ` Jeff Law
2019-08-19 14:23     ` Richard Biener
2019-08-22  2:12       ` Jeff Law
2019-08-22 11:14         ` Richard Biener
2019-08-23 20:27           ` Jeff Law
2019-08-26 10:07             ` Richard Biener
2019-09-03 21:24               ` Jeff Law
2019-09-09 20:10               ` Jeff Law
2019-09-16  9:12                 ` Richard Biener
2019-09-16  9:18                   ` Richard Biener
2019-08-22 15:53         ` Martin Sebor
2019-08-23 16:50           ` Jeff Law
2019-08-16 21:50   ` Jeff Law
2019-08-16 22:19     ` Marc Glisse
2019-08-16 22:43       ` Jeff Law

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).