Rewrite the use optimizer to be less memory intensive and 50% faster.
authorDaniel Berlin <dberlin@dberlin.org>
Tue, 2 Aug 2016 16:24:03 +0000 (16:24 +0000)
committerDaniel Berlin <dberlin@dberlin.org>
Tue, 2 Aug 2016 16:24:03 +0000 (16:24 +0000)
commitc43aa5a5b62b21c1d38cd3d2ece7d0d5124d5180
treea299f4c2feced40f2c30eb4410998e329d6da60b
parent2e19f593040cfa77aec58b0816bff0e3235799e3
Rewrite the use optimizer to be less memory intensive and 50% faster.
Fixes PR28670

Summary:
Rewrite the use optimizer to be less memory intensive and 50% faster.
Fixes PR28670

The new use optimizer works like a standard SSA renaming pass, storing
all possible versions a MemorySSA use could get in a stack, and just
tracking indexes into the stack.
This uses much less memory than caching N^2 alias query results.
It's also a lot faster.

The current version defers phi node walking to the normal walker.

Reviewers: george.burgess.iv

Subscribers: llvm-commits

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

llvm-svn: 277480
llvm/include/llvm/Transforms/Utils/MemorySSA.h
llvm/lib/Transforms/Utils/MemorySSA.cpp