llvm-6502/lib/Transforms
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
..
Hello Make this example pass use some things from lib/Support (EscapeString, 2006-08-07 23:17:24 +00:00
Instrumentation Patches to make the LLVM sources more -pedantic clean. Patch provided 2006-05-24 17:04:05 +00:00
IPO Make it fit into 80 cols. 2006-07-20 18:03:39 +00:00
Scalar Changes: 2006-08-03 06:34:50 +00:00
Utils Reimplement the loopsimplify code which deletes edges from unreachable 2006-08-12 04:51:20 +00:00
ExprTypeConvert.cpp Remove dead stuff 2006-05-12 23:32:01 +00:00
LevelRaise.cpp remove dead variables 2006-05-14 18:33:57 +00:00
Makefile DONT_BUILD_RELINKED is gone and implied by BUILD_ARCHIVE now 2005-10-24 02:26:13 +00:00
TransformInternals.cpp Remove dead #include 2005-10-29 04:41:30 +00:00
TransformInternals.h ConvertibleToGEP always returns 0, remove some old crufty code which 2005-07-26 16:38:28 +00:00