On Fri, Dec 16, 2016 at 2:54 AM, Jeff Law <l...@redhat.com> wrote:
> This is a 4 part patchkit to address various deficiencies in our DSE
> implementation.
>
> BZ33562 was the inspiration for this work.  33562 is a low priority
> regression that's been around for a long time.  Patch #1 addresses 33562,
> "aggregate DSE disabled" and also implements trimming of complex assignment
> when just one half of it is dead.
>
> The discussions last year with Richi, reviewing of bugs in both LLVM and
> GCC's databases and code instrumentation resulted in patches 2-4.
>
> Patch #2 implements trimming of CONSTRUCTOR initializations.  This is
> 61912/77485.  This gets the most static hits of all the improvements.
>
> Patch #3 implements trimming of mem* calls.  We trim from the front or back
> of the store.    This doesn't hit as much as #2, but still happens quite
> often.  There is no BZ for this deficiency.
>
> Patch #4 adds the ability to look through loads which may read from the same
> memory as the potentially dead store, but which can be proven only read from
> currently dead bytes within the object.  This hits just once in the compiler
> & runtime libraries.  But it does hit often in the libstdc++ testsuite.
> There is no BZ for this deficiency.
>
>
> There's dependencies as we walk forward in the patch kits.  Each patch has
> been bootstrapped & tested with its previous patch(es).
>
> There is much more that could be done beyond the series of 4 patches in this
> patchkit.  Richi has pointed out that SRA and DSE could probably share a lot
> of analysis and transformation code.  There may even be advantages to having
> the two optimizations integrated into a single pass.  I haven't investigated
> any of that yet (though we are using a bit of code from SRA in this kit).

Yes, see also PR78821, similar other passes are bswap detection and
store merging.  Basically all passes that find "related" loads/stores.
I suppose
rather than fully merging the passes but trying to share some analysis code
and data structures would be a good start (though at the same time you'd
probably rewrite most of those passes).

> We also need to look at store sinking again.  I saw a patch from Richi back
> in July looked reasonable at a high level and would likely allow resolution
> of a multiple BZs.

Yeah, it had some fallout / pass ordering issue and I never went back to
it (being also a very simplistic implementation).

Richard.

> Jeff

Reply via email to