[MemorySSA] Rename uses when inserting memory uses.
authorAlina Sbirlea <asbirlea@google.com>
Mon, 19 Aug 2019 18:57:40 +0000 (18:57 +0000)
committerAlina Sbirlea <asbirlea@google.com>
Mon, 19 Aug 2019 18:57:40 +0000 (18:57 +0000)
commit1a3fdaf6a6ee0d4ff0bb5daf80c54a9fa5594467
tree74fa75b317dd89ff6a439f14dd8846677a41563e
parent4340c2cf8fa79731d19a8a94cee87bb280c5b8aa
[MemorySSA] Rename uses when inserting memory uses.

Summary:
When inserting uses from outside the MemorySSA creation, we don't
normally need to rename uses, based on the assumption that there will be
no inserted Phis (if  Def existed that required a Phi, that Phi already
exists). However, when dealing with unreachable blocks, MemorySSA will
optimize away Phis whose incoming blocks are unreachable, and these Phis end
up being re-added when inserting a Use.
There are two potential solutions here:
1. Analyze the inserted Phis and clean them up if they are unneeded
(current method for cleaning up trivial phis does not cover this)
2. Leave the Phi in place and rename uses, the same way as whe inserting
defs.
This patch use approach 2.

Resolves first test in PR42940.

Reviewers: george.burgess.iv

Subscribers: Prazek, sanjoy.google, llvm-commits

Tags: #llvm

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

llvm-svn: 369291
llvm/include/llvm/Analysis/MemorySSAUpdater.h
llvm/lib/Analysis/MemorySSA.cpp
llvm/lib/Analysis/MemorySSAUpdater.cpp
llvm/lib/Transforms/Scalar/LICM.cpp
llvm/test/Analysis/MemorySSA/PR42940.ll [new file with mode: 0644]