rewrite the code used to construct pruned SSA form with the IDF method.
authorChris Lattner <sabre@nondot.org>
Sat, 4 Aug 2007 22:50:14 +0000 (22:50 +0000)
committerChris Lattner <sabre@nondot.org>
Sat, 4 Aug 2007 22:50:14 +0000 (22:50 +0000)
commitf12f8def399c80aa283783ca406434ee2f80b49f
treec847cc8d36ac92059078a2e7b08c0c9f5bc9d697
parent0ec8df3d5fa526cf460d7c60c515f181de28ac95
rewrite the code used to construct pruned SSA form with the IDF method.
In the old way, we computed and inserted phi nodes for the whole IDF of
the definitions of the alloca, then computed which ones were dead and
removed them.

In the new method, we first compute the region where the value is live,
and use that information to only insert phi nodes that are live.  This
eliminates the need to compute liveness later, and stops the algorithm
from inserting a bunch of phis which it then later removes.

This speeds up the testcase in PR1432 from 2.00s to 0.15s (14x) in a
release build and 6.84s->0.50s (14x) in a debug build.

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