llvm-6502/lib/Transforms/Scalar
Chris Lattner c89c6a964c Implement PRE of loads in the GVN pass with a pretty cheap and
straight-forward implementation.  This does not require any extra
alias analysis queries beyond what we already do for non-local loads.

Some programs really really like load PRE.  For example, SPASS triggers
this ~1000 times, ~300 times in 255.vortex, and ~1500 times on 403.gcc.

The biggest limitation to the implementation is that it does not split
critical edges.  This is a huge killer on many programs and should be
addressed after the initial patch is enabled by default.

The implementation of this should incidentally speed up rejection of 
non-local loads because it avoids creating the repl densemap in cases 
when it won't be used for fully redundant loads.

This is currently disabled by default.
Before I turn this on, I need to fix a couple of miscompilations in
the testsuite, look at compile time performance numbers, and look at
perf impact.  This is pretty close to ready though.




git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@60408 91177308-0d34-0410-b5e6-96231b3b80d8
2008-12-02 08:16:11 +00:00
..
ADCE.cpp
BasicBlockPlacement.cpp
CMakeLists.txt
CodeGenPrepare.cpp don't call MergeBasicBlockIntoOnlyPred on a block whose only 2008-11-28 19:54:49 +00:00
CondPropagate.cpp
ConstantProp.cpp
DCE.cpp simplify this logic. 2008-11-27 22:46:09 +00:00
DeadStoreElimination.cpp Fix a thinko that manifested as a crash on clamav last night. 2008-11-29 20:29:04 +00:00
GVN.cpp Implement PRE of loads in the GVN pass with a pretty cheap and 2008-12-02 08:16:11 +00:00
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 Remove some errors that crept in. No functionality change. 2008-12-02 06:24:20 +00:00
JumpThreading.cpp switch a couple more calls to use array_pod_sort. 2008-12-01 06:52:57 +00:00
LICM.cpp
LoopDeletion.cpp
LoopIndexSplit.cpp
LoopRotation.cpp
LoopStrengthReduce.cpp some random comment improvements. 2008-12-02 04:52:26 +00:00
LoopUnroll.cpp
LoopUnswitch.cpp switch a couple more calls to use array_pod_sort. 2008-12-01 06:52:57 +00:00
Makefile
MemCpyOptimizer.cpp Eliminate the dropInstruction method, which is not needed any more. 2008-11-29 23:30:39 +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
SCCP.cpp Fix unused variable warnings. 2008-11-21 01:52:59 +00:00
SimplifyCFGPass.cpp
SimplifyHalfPowrLibCalls.cpp
SimplifyLibCalls.cpp Optimize memmove and memset into the LLVM builtins. Note that these 2008-11-30 08:32:11 +00:00
TailDuplication.cpp simplify code. 2008-11-27 22:56:14 +00:00
TailRecursionElimination.cpp