llvm-6502/test/Transforms
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
AddReadAttrs
ArgumentPromotion
BlockPlacement
BranchFolding
CodeExtractor
CodeGenPrepare reenable test 2008-11-24 21:27:20 +00:00
CondProp
ConstantMerge
ConstProp
DeadArgElim
DeadStoreElimination Fix a thinko that manifested as a crash on clamav last night. 2008-11-29 20:29:04 +00:00
GlobalDCE
GlobalOpt
GVN Implement PRE of loads in the GVN pass with a pretty cheap and 2008-12-02 08:16:11 +00:00
GVNPRE
IndVarsSimplify convertToSignExtendedInteger should return opInvalidOp instead of asserting if sematics of float does not allow arithmetics. 2008-11-25 19:00:29 +00:00
Inline Add PR number. 2008-11-05 18:41:15 +00:00
InstCombine Use m_Specific() instead of double matching. 2008-12-01 08:09:47 +00:00
Internalize
IPConstantProp
JumpThreading don't call MergeBasicBlockIntoOnlyPred on a block whose only 2008-11-28 19:54:49 +00:00
LCSSA
LICM
LoopDeletion
LoopIndexSplit If the sign of exit condition and split condition does not match 2008-11-10 19:48:34 +00:00
LoopRotate
LoopSimplify
LoopStrengthReduce
LoopUnroll
LoopUnswitch Ignore conditions that are outside the loop. 2008-11-03 19:38:07 +00:00
LowerInvoke
LowerSetJmp
LowerSwitch
Mem2Reg no need to print output 2008-10-27 06:56:35 +00:00
MemCpyOpt
MergeFunc Fix tests not to emit IR output 2008-11-04 23:02:39 +00:00
PredicateSimplifier
PruneEH Rationalize the names of passes that print information: 2008-09-23 12:47:39 +00:00
RaiseAllocations
Reassociate
ScalarRepl
SCCP
SimplifyCFG Fix PR2967 by not deleting volatile load/stores that occur before unreachable. 2008-10-29 17:46:26 +00:00
SimplifyLibCalls Optimize memmove and memset into the LLVM builtins. Note that these 2008-11-30 08:32:11 +00:00
SRETPromotion
StripSymbols
TailCallElim
TailDup