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 Ignore loads from and stores to local memory (i.e. allocas) 2008-10-04 13:24:24 +00:00
ArgumentPromotion
BlockPlacement Rationalize the names of passes that print information: 2008-09-23 12:47:39 +00:00
BranchFolding
CodeExtractor
CodeGenPrepare reenable test 2008-11-24 21:27:20 +00:00
CondProp
ConstantMerge
ConstProp apply Eli's patch for PR2165 and provide a testcase. 2008-10-16 05:26:51 +00:00
DeadArgElim Support inreg, zext and sext as return value attributes. 2008-09-29 20:49:50 +00:00
DeadStoreElimination Fix a thinko that manifested as a crash on clamav last night. 2008-11-29 20:29:04 +00:00
GlobalDCE
GlobalOpt Resolve aliases, when possible 2008-09-09 19:04:59 +00:00
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 Remove. 2008-09-09 21:41:34 +00:00
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 Allow scalarrepl to treat an all-zero GEP just as bitcast. 2008-10-06 16:23:31 +00:00
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