This changes the PromoteMemToReg function to create "pruned" SSA form, not
authorChris Lattner <sabre@nondot.org>
Sun, 5 Oct 2003 22:19:20 +0000 (22:19 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 5 Oct 2003 22:19:20 +0000 (22:19 +0000)
commit69091be83bfcfcf52f9d0b1faba94675826607db
treea27996d2783dca9412b1708b3a328f7a02a84546
parent43f820d1f7638656be2158efac7dd8f5b08b8b77
This changes the PromoteMemToReg function to create "pruned" SSA form, not
"minimal" SSA form (in other words, it doesn't insert dead PHIs).  This
speeds up the mem2reg pass very significantly because it doesn't have to
do a lot of frivolous work in many common cases.

In the 252.eon function I have been playing with, this doesn't even insert
the 120 PHI nodes that it used to which were trivially dead (in the process
of promoting 356 alloca instructions overall).  This speeds up the mem2reg
pass from 1.2459s to 0.1284s.  More significantly, the DCE pass used to take
2.4138s to remove the 120 dead PHI nodes that mem2reg constructed, now it
takes 0.0134s (which is the time to scan the function and decide that there
is nothing dead).  So overall, on this one function, we speed things up a
total of 3.5179s, which is a 24.8x speedup!  :)

This change is tested by the Mem2Reg/2003-10-05-DeadPHIInsertion.ll test,
which now passes.

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