llvm-6502/lib/Transforms/Scalar
Chris Lattner 69e067fdd8 Make jump threading substantially more powerful, in the following ways:
1. Make it fold blocks separated by an unconditional branch.  This enables
   jump threading to see a broader scope.
2. Make jump threading able to eliminate locally redundant loads when they
   feed the branch condition of a block.  This frequently occurs due to
   reg2mem running.
3. Make jump threading able to eliminate *partially redundant* loads when
   they feed the branch condition of a block.  This is common in code with
   lots of loads and stores like C++ code and 255.vortex.

This implements thread-loads.ll and rdar://6402033.

Per the fixme's, several pieces of this should be moved into Transforms/Utils.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60148 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-27 05:07:53 +00:00
..
ADCE.cpp Let instcombiner remove redundant dbg intrinsics. 2008-11-19 18:59:41 +00:00
BasicBlockPlacement.cpp
CMakeLists.txt CMake: updated list of source files. 2008-11-05 00:11:22 +00:00
CodeGenPrepare.cpp Turn on my codegen prepare heuristic by default. It doesn't affect 2008-11-26 22:16:44 +00:00
CondPropagate.cpp
ConstantProp.cpp
DCE.cpp
DeadStoreElimination.cpp
GVN.cpp
GVNPRE.cpp
IndVarSimplify.cpp Revert r60042. IndVarSimplify should check if APFloat is PPCDoubleDouble first before trying to convert it to an integer. 2008-11-26 01:11:57 +00:00
InstructionCombining.cpp reapply Sanjiv's patch to genericize memcpy/memset/memmove to take an 2008-11-21 16:42:48 +00:00
JumpThreading.cpp Make jump threading substantially more powerful, in the following ways: 2008-11-27 05:07:53 +00:00
LICM.cpp Change create*Pass factory functions to return Pass* instead of 2008-10-22 23:32:42 +00:00
LoopDeletion.cpp Change create*Pass factory functions to return Pass* instead of 2008-10-22 23:32:42 +00:00
LoopIndexSplit.cpp If the sign of exit condition and split condition does not match 2008-11-10 19:48:34 +00:00
LoopRotation.cpp Change create*Pass factory functions to return Pass* instead of 2008-10-22 23:32:42 +00:00
LoopStrengthReduce.cpp Change create*Pass factory functions to return Pass* instead of 2008-10-22 23:32:42 +00:00
LoopUnroll.cpp Change create*Pass factory functions to return Pass* instead of 2008-10-22 23:32:42 +00:00
LoopUnswitch.cpp Ignore conditions that are outside the loop. 2008-11-03 19:38:07 +00:00
Makefile
MemCpyOptimizer.cpp reapply Sanjiv's patch to genericize memcpy/memset/memmove to take an 2008-11-21 16:42:48 +00:00
PredicateSimplifier.cpp Silence unused variable warnings. 2008-11-21 20:00:59 +00:00
Reassociate.cpp Fix build failure. 2008-11-21 21:00:20 +00:00
Reg2Mem.cpp
Scalar.cpp
ScalarReplAggregates.cpp Allow SROA of vectors. Removing this caused a 2008-11-04 20:54:03 +00:00
SCCP.cpp Fix unused variable warnings. 2008-11-21 01:52:59 +00:00
SimplifyCFGPass.cpp
SimplifyHalfPowrLibCalls.cpp Add a new pass to simplify specific half_powr function calls. This is 2008-11-04 23:41:45 +00:00
SimplifyLibCalls.cpp reapply Sanjiv's patch to genericize memcpy/memset/memmove to take an 2008-11-21 16:42:48 +00:00
TailDuplication.cpp
TailRecursionElimination.cpp