This is an archive of the discontinued LLVM Phabricator instance.

[EarlyCSE] Enable MemorySSA for middle-end run of EarlyCSE.
AbandonedPublic

Authored by gberry on Oct 25 2016, 1:02 PM.

Details

Reviewers
dberlin
Summary

Use MemorySSA for memory dependency checking in EarlyCSE pass at the
start of addFunctionSimplificationPasses at O2 and higher.

Event Timeline

gberry updated this revision to Diff 75775.Oct 25 2016, 1:02 PM
gberry retitled this revision from to [EarlyCSE] Enable MemorySSA for middle-end run of EarlyCSE..
gberry updated this object.
gberry added a reviewer: dberlin.
gberry added subscribers: llvm-commits, mcrosier.

Compile-time increases from llvm-test-suite O3 -mcpu=kryo:
llvm-test-suite/MultiSource/Benchmarks/tramp3d-v4/tramp3d-v4:normal +1.078%
llvm-test-suite/SingleSource/Benchmarks/Misc-C++-EH/spirit:normal +1.333%
llvm-test-suite/MultiSource/Applications/kimwitu++/kc:normal +1.493%
llvm-test-suite/MultiSource/Applications/sqlite3/sqlite3:normal +1.650%

No compile-time increases at O2

Notable performance improvements:
llvm-test-suite/fftbench +16%
spec2000/bzip2 +10%

reames added a subscriber: reames.Nov 30 2016, 6:17 PM

This seems like a reasonable tradeoff, but I'd really like to hear from someone more familiar with the general status of MemorySSA. Is it ready to be on by default?

gberry added a subscriber: sebpop.Dec 1 2016, 8:38 AM

This seems like a reasonable tradeoff, but I'd really like to hear from someone more familiar with the general status of MemorySSA. Is it ready to be on by default?

I haven't gotten a change to do this yet, but one thing I'd like to try out is moving GVNHoist to just after this pass of EarlyCSE, which should eliminate one of the MemorySSA construction passes. I discussed this with @sebpop and he seemed amenable.

dberlin accepted this revision.Jan 20 2017, 3:25 PM
This revision is now accepted and ready to land.Jan 20 2017, 3:25 PM
gberry abandoned this revision.Jun 12 2017, 8:41 AM

Abandoning this. EarlyCSE w/ MemorySSA will be enabled once the ongoing round of fuzz testing and related bug fixing is completed.