[llvm-dev] [RFC] Switching to MemorySSA-backed Dead Store Elimination (aka cross-bb DSE)
Florian Hahn via llvm-dev
llvm-dev at lists.llvm.org
Tue Aug 18 09:10:37 PDT 2020
> On Aug 18, 2020, at 15:02, Renato Golin <rengolin at gmail.com> wrote:
> On Tue, 18 Aug 2020 at 14:36, Florian Hahn via llvm-dev <llvm-dev at lists.llvm.org <mailto:llvm-dev at lists.llvm.org>> wrote:
> Note that both the current and MemorySSA-backed DSE implementations rely on various thresholds to avoid excessive compile-times. There are a few knobs to turn to further reduce compile-time of the MemorySSA-backed DSE implementation, at the cost of missing to eliminate some stores.The current settings are chose so the compile-time difference is limited without limiting optimizations too much.
> Did you compare the new algorithm with the knobs down enough to take roughly the same compile time as the old one?
Without spending too much time on that, the best I could do while not regressing on the total number of stores removed was +0.30% (for CTMark) executed instructions for -O3 with ~3% more stores removed across the large benchmark set. (Executed instruction +0.28% for ReleaseLTO, +0.58% for ReleaseThinLTO).
So MemorySSA DSE probably can get quite close to legacy DSE at legacy DSE’s own game, but intuitively I think the MemorySSA approach is just slightly more expensive in general, because it does not just handle cases that can be cached easily and allows for more flexibility.
> Use slightly more aggressive limits at O2, those limits at O3 and perhaps add an extra argument to push even further for people who really need it and can pay the extra compile time.
That is certainly an option, but I think ideally the settings do not get too fragmented.
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the llvm-dev