llvm-6502/lib/Transforms/Utils
Chris Lattner 69091be83b 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
2003-10-05 22:19:20 +00:00
..
BasicBlockUtils.cpp Spell `necessary' correctly. 2003-08-18 14:43:39 +00:00
BreakCriticalEdges.cpp Remove unnecesary &*'s 2003-04-23 16:37:45 +00:00
CloneFunction.cpp Refactor CloneFunction to expose the new CloneBasicBlock function 2003-04-18 03:50:09 +00:00
CloneModule.cpp Make sure that the cloned module retains the type symbol table entries! 2003-04-24 17:15:33 +00:00
CloneTrace.cpp Fixed comment width, changed arg to be const, fixed indentation, removed unnecessary includes. 2003-05-31 20:01:37 +00:00
DemoteRegToStack.cpp Minor cleanups, no functional changes 2003-09-20 14:36:23 +00:00
InlineFunction.cpp Fix bugs in the last change 2003-09-22 23:30:59 +00:00
Linker.cpp Fix bug where we considered function types equivalent even if they had differing numbers of arguments 2003-08-28 16:42:50 +00:00
Local.cpp Implement SimplifyCFG/2003-08-17-FoldSwitch.ll:test5 2003-08-23 23:18:19 +00:00
LoopSimplify.cpp Renamed DominatorTree::Node::getNode() -> getBlock() 2003-09-11 16:26:13 +00:00
LowerAllocations.cpp Use new interface, simplifies code 2003-08-31 00:22:27 +00:00
LowerInvoke.cpp Initial checkin of the LLVM->LLVM transform to support code generators which 2003-10-05 19:14:42 +00:00
LowerSwitch.cpp Fix bug: LowerSwitch/2003-08-23-EmptySwitch.ll 2003-08-23 22:54:34 +00:00
Makefile *** empty log message *** 2002-07-23 17:52:38 +00:00
Mem2Reg.cpp Change the interface to PromoteMemToReg to also take a DominatorTree 2003-10-05 21:20:13 +00:00
PromoteMemoryToRegister.cpp This changes the PromoteMemToReg function to create "pruned" SSA form, not 2003-10-05 22:19:20 +00:00
SimplifyCFG.cpp Eliminate support for the llvm.unwind intrinisic, using the Unwind instruction instead 2003-09-08 19:44:26 +00:00
UnifyFunctionExitNodes.cpp Expand the pass to unify all of the unwind blocks as well 2003-09-10 20:34:51 +00:00
ValueMapper.cpp New const_cast instead of c style cast 2003-04-18 03:49:49 +00:00
ValueMapper.h Initial checkin of Module cloning support stuff 2002-11-20 20:47:41 +00:00