OSDN Git Service

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)
commitc32071c25275f3bb3077d67f31cf8d19507fa67a
treeb9544611abf73bc2c8add9e26697860e84ff84b9
parente2e5c0738c362dc1751af0f309cdaaab65ac0fe1
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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@277480 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/Transforms/Utils/MemorySSA.h
lib/Transforms/Utils/MemorySSA.cpp