llvm/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 Remove the ability for ADCE to remove unreachable blocks in loop nests, because, as Eli pointed out, SimplifyCFG already does this. 2008-07-03 17:21:41 +00:00
AddReadAttrs Ignore loads from and stores to local memory (i.e. allocas) 2008-10-04 13:24:24 +00:00
ArgumentPromotion Update the callgraph correctly in ArgumentPromotion. 2008-09-08 11:07:35 +00:00
BlockPlacement Rationalize the names of passes that print information: 2008-09-23 12:47:39 +00:00
BranchFolding Don't branch fold inline asm statements. 2007-10-19 21:09:55 +00:00
CodeExtractor sabre brings to my attention that the 'tr' suffix is also obsolete 2008-05-20 21:00:03 +00:00
CodeGenPrepare reenable test 2008-11-24 21:27:20 +00:00
CondProp Remove llvm-upgrade and update test cases. 2008-03-01 09:15:35 +00:00
ConstantMerge sabre brings to my attention that the 'tr' suffix is also obsolete 2008-05-20 21:00:03 +00:00
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 sabre brings to my attention that the 'tr' suffix is also obsolete 2008-05-20 21:00:03 +00:00
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 sabre brings to my attention that the 'tr' suffix is also obsolete 2008-05-20 21:00:03 +00:00
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 Let some more tests ignore expected output on stderr. 2008-06-10 15:04:14 +00:00
IPConstantProp Modify some ipconstprop tests to also test with invokes. 2008-06-19 09:27:44 +00:00
JumpThreading don't call MergeBasicBlockIntoOnlyPred on a block whose only 2008-11-28 19:54:49 +00:00
LCSSA sabre brings to my attention that the 'tr' suffix is also obsolete 2008-05-20 21:00:03 +00:00
LICM Remove GCSE and LoadVN from the testsuite. 2008-08-16 00:00:54 +00:00
LoopDeletion sabre brings to my attention that the 'tr' suffix is also obsolete 2008-05-20 21:00:03 +00:00
LoopIndexSplit If the sign of exit condition and split condition does not match 2008-11-10 19:48:34 +00:00
LoopRotate sabre brings to my attention that the 'tr' suffix is also obsolete 2008-05-20 21:00:03 +00:00
LoopSimplify sabre brings to my attention that the 'tr' suffix is also obsolete 2008-05-20 21:00:03 +00:00
LoopStrengthReduce Remove. 2008-09-09 21:41:34 +00:00
LoopUnroll Add -unroll-allow-partial command line option that enabled the loop unroller to 2008-07-29 13:21:23 +00:00
LoopUnswitch Ignore conditions that are outside the loop. 2008-11-03 19:38:07 +00:00
LowerInvoke sabre brings to my attention that the 'tr' suffix is also obsolete 2008-05-20 21:00:03 +00:00
LowerSetJmp sabre brings to my attention that the 'tr' suffix is also obsolete 2008-05-20 21:00:03 +00:00
LowerSwitch sabre brings to my attention that the 'tr' suffix is also obsolete 2008-05-20 21:00:03 +00:00
Mem2Reg no need to print output 2008-10-27 06:56:35 +00:00
MemCpyOpt Fix two issues that Eli Friedman pointed out, where would misoptimized code like: 2008-06-01 22:26:26 +00:00
MergeFunc Fix tests not to emit IR output 2008-11-04 23:02:39 +00:00
PredicateSimplifier sabre brings to my attention that the 'tr' suffix is also obsolete 2008-05-20 21:00:03 +00:00
PruneEH Rationalize the names of passes that print information: 2008-09-23 12:47:39 +00:00
RaiseAllocations sabre brings to my attention that the 'tr' suffix is also obsolete 2008-05-20 21:00:03 +00:00
Reassociate Remove GCSE and LoadVN from the testsuite. 2008-08-16 00:00:54 +00:00
ScalarRepl Allow scalarrepl to treat an all-zero GEP just as bitcast. 2008-10-06 16:23:31 +00:00
SCCP Fix SCCP's handling of struct value loads and stores. SCCP doesn't 2008-08-13 21:22:48 +00:00
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 Add a basic test for the SRETPromotion pass. 2008-08-07 15:55:18 +00:00
StripSymbols sabre brings to my attention that the 'tr' suffix is also obsolete 2008-05-20 21:00:03 +00:00
TailCallElim sabre brings to my attention that the 'tr' suffix is also obsolete 2008-05-20 21:00:03 +00:00
TailDup Revert 52223. 2008-06-12 20:55:39 +00:00