[EarlyCSE] Optimize MemoryPhis and reduce memory clobber queries w/ MemorySSA
authorGeoff Berry <gberry@codeaurora.org>
Mon, 24 Oct 2016 15:54:00 +0000 (15:54 +0000)
committerGeoff Berry <gberry@codeaurora.org>
Mon, 24 Oct 2016 15:54:00 +0000 (15:54 +0000)
commit6815468768c9f87a63cda5a05e18ca4a82dbe7d7
tree825172daf5d4ba68ef1bf3c6226429fbd33bbfe6
parent1f31e9157de78e07e39a62bddefe9a137fee0216
[EarlyCSE] Optimize MemoryPhis and reduce memory clobber queries w/ MemorySSA

Summary:
When using MemorySSA, re-optimize MemoryPhis when removing a store since
this may create MemoryPhis with all identical arguments.

Also, when using MemorySSA to check if two MemoryUses are reading from
the same version of the heap, use the defining access instead of calling
getClobberingAccess, since the latter can currently result in many more
AA calls.  Once the MemorySSA use optimization tracking changes are
done, we can remove this limitation, which should result in more loads
being CSE'd.

Reviewers: dberlin

Subscribers: mcrosier, llvm-commits

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

llvm-svn: 284984
llvm/lib/Transforms/Scalar/EarlyCSE.cpp
llvm/test/Transforms/EarlyCSE/memoryssa.ll