[llvm-dev] RFC: Replace usage of Alias Set Tracker with MemorySSA in LICM

Alina Sbirlea via llvm-dev llvm-dev at lists.llvm.org
Tue May 30 10:07:56 PDT 2017


I wanted to give a heads-up that I've been looking into replacing the
AliasSetTracker(AST) with MemorySSA in the Loop Invariant Code Motion
(LICM) pass.
I would love to get feedback on the best way to incrementally push in this

There has been an outstanding issue with using the Alias Set Tracker due to
its expensive construction time (quadratic).
We've had test cases take forever to compile, where the largest time was
spent constructing the AST in LICM.
We've also had to degrade the AST results as a temporary fix to resolve
this (D23432).
The hope is that by using MemorySSA instead, which has linear construction
time, we can avoid this issues and decrease compile times.

Some initial discussion points:
1. As a first step, I'm looking at having MemorySSA as a dependency only
for LICM, in the old pass manager.
2. In the future, MemorySSA may become one of the loop passes that's
readily available for all loops in the new pass manager. This will be a
more extensive change and it may require analyzing the overhead of
preserving MemorySSA by all loop passes.
3. As was pointed out in an earlier thread, MemorySSA could be used to
implement AliasSetTracker. I am not looking into that. I'm looking into
explicitly using MemorySSA, instead of the AliasSetTracker.
If there are issues with this choice, please raise them here.

As this is still work in progress, the feedback received will help shape
how the replacement gets implemented and merged in.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170530/a6ec7757/attachment-0001.html>

More information about the llvm-dev mailing list