[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 25 12:51:41 PDT 2020


Hi,

Thanks for all the responses!

My understanding is that there were no objections so far against trading a bit of additional compile-time for more eliminated stores. Unless there are any new concerns raised, I’ll continue working on submitting the remaining patches to keep compile-time in check and flip the switch once they are in.


> On Aug 19, 2020, at 18:46, Alina Sbirlea <alina.sbirlea at gmail.com> wrote:
> 
> Hi Florian,
> 
> First, thank you for working on this. I'm really glad to see this work so close to being enabled.
> 
> I think the numbers look good for run time, and the benefits of switching for all configurations are clear.
> 
> For compile time, the current regressions are noticeable, but not a deal breaker in my opinion. I'm very much in favor of switching in all configurations.
> 
> To address some of the concerns, it may make sense to lower the threshold somewhat to minimize impact at this time (we won't have benefits as large at the time of the switch). I'm talking about getting the geomean closer to 1% in all configurations if possible.
> I believe that the regressions introduced by this flag flip can be undone by further using MemorySSA in the other passes currently using MemDepAnalysis, and offsetting the cost of computing MemorySSA in the first place. The threshold could be raised again to enable more stores eliminated once the MemCpyOpt+MSSA and NewGVN become the default.
> 
> If reducing the thresholds is not possible or removes most of the run time benefits, I would vote for enabling as is.

I’ve been working on some additional changes to bring compile-time down a bit further, while keeping the number of eliminated stores at a similar level. Geomeans:
 -O3                       +0.62%
ReleaseThinLTO   +1.06%, 
ReleaseLTO-g      +0.79% Re
ReleaseThinLTO (link-only)  +0.96%
ReleaseLTO-G  (link only).   +0.80%

http://llvm-compile-time-tracker.com/compare.php?from=e19ef1aab524ef10a2d118adcd9f6fd6ca2d7ca9&to=c6812412983b4ebb20f1e32b83893284c8117e7f&stat=instructions

This also includes changes so DSE can re-use MemorySSA constructed by LICM earlier during LTO. The limits could certainly be a bit tighter still, but I hope they might encourage a few additional eyes on DSE + MemorySSA compile-time wise, which would be great. Also, triggering as often as possible is probably beneficial in terms of flushing out any remaining issues early.

Cheers,
Florian


More information about the llvm-dev mailing list