llvm/lib/Transforms/Utils
Chris Lattner fa78946482 Reimplement the loopsimplify code which deletes edges from unreachable
blocks that target loop blocks.

Before, the code was run once per loop, and depended on the number of
predecessors each block in the loop had.  Unfortunately, scanning preds can
be really slow when huge numbers of phis exist or when phis with huge numbers
of inputs exist.

Now, the code is run once per function and scans successors instead of preds,
which is far faster.  In addition, the new code is simpler and is goto free,
woo.

This change speeds up a nasty testcase Duraid provided me from taking hours to
taking ~72s with a debug build.  The functionality this implements is already
tested in the testsuite as Transforms/CodeExtractor/2004-03-13-LoopExtractorCrash.ll.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29644 91177308-0d34-0410-b5e6-96231b3b80d8
2006-08-12 04:51:20 +00:00
..
BasicBlockUtils.cpp Fix a doxygen problem and break lines at 80 columns 2006-05-19 19:09:46 +00:00
BreakCriticalEdges.cpp Use hidden visibility to make symbols in an anonymous namespace get 2006-06-28 23:17:24 +00:00
CloneFunction.cpp Remove dead #include 2006-06-01 20:02:28 +00:00
CloneModule.cpp Add a CloneModule call that exposes the mapping of values from the old module 2006-05-17 18:05:35 +00:00
CloneTrace.cpp
CodeExtractor.cpp
DemoteRegToStack.cpp
InlineFunction.cpp silence warnings in a release build 2006-07-18 21:48:57 +00:00
LCSSA.cpp Add special check to avoid isLoop call. Simple, but doesn't seem to speed 2006-08-02 00:16:47 +00:00
Local.cpp Refactor some code to expose an interface to constant fold and instruction given it's opcode, typeand operands. 2006-05-27 01:18:04 +00:00
LoopSimplify.cpp Reimplement the loopsimplify code which deletes edges from unreachable 2006-08-12 04:51:20 +00:00
LowerAllocations.cpp Use hidden visibility to make symbols in an anonymous namespace get 2006-06-28 23:17:24 +00:00
LowerInvoke.cpp Shrink libllvmgcc.dylib by another 23K 2006-06-28 22:08:15 +00:00
LowerSelect.cpp Declare that lowerinvoke doesn't interact with other lowering passes. 2006-05-17 21:05:27 +00:00
LowerSwitch.cpp Shrink libllvmgcc.dylib by another 23K 2006-06-28 22:08:15 +00:00
Makefile
Mem2Reg.cpp Shrink libllvmgcc.dylib by another 23K 2006-06-28 22:08:15 +00:00
PromoteMemoryToRegister.cpp Use hidden visibility to make symbols in an anonymous namespace get 2006-06-28 23:17:24 +00:00
SimplifyCFG.cpp Fix PR867 (and maybe 868) and testcsae: 2006-08-03 21:40:24 +00:00
UnifyFunctionExitNodes.cpp Force anything that #includes llvm/Transforms/Utils/UnifyFunctionExitNodes.h 2006-06-02 18:40:06 +00:00
ValueMapper.cpp eliminate some ugly code, using ConstantExpr::getWithOperands instead. 2006-07-14 22:21:31 +00:00
ValueMapper.h