[MemorySSA] LCSSA preserves MemorySSA.
authorAlina Sbirlea <asbirlea@google.com>
Tue, 23 Apr 2019 20:59:44 +0000 (20:59 +0000)
committerAlina Sbirlea <asbirlea@google.com>
Tue, 23 Apr 2019 20:59:44 +0000 (20:59 +0000)
commit4fd1f266b1e984e06da164beb7513589a87e983a
tree805c4305db09a736fdbdd3f746bc989db43ef745
parent26518466ef8c23314710c97807b7d0f6e0ca86ca
[MemorySSA] LCSSA preserves MemorySSA.

Summary:
Enabling MemorySSA in the old pass manager leads to MemorySSA being run
twice due to the fact that LCSSA and LoopSimplify do not preserve
MemorySSA. This is the first step to address that: target LCSSA.

LCSSA does not make any changes that invalidate MemorySSA, so it
preserves it by design. It must preserve AA as well, for this to hold.

After this patch, MemorySSA is still run twice in the old pass manager.
Step two follows: target LoopSimplify.

Subscribers: mehdi_amini, jlebar, Prazek, llvm-commits, george.burgess.iv, chandlerc

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D60832

llvm-svn: 359032
llvm/include/llvm/Analysis/LoopAnalysisManager.h
llvm/include/llvm/Analysis/MemorySSA.h
llvm/lib/Analysis/LoopAnalysisManager.cpp
llvm/lib/Analysis/MemorySSA.cpp
llvm/lib/Transforms/Utils/LCSSA.cpp