llvm-6502/lib/Transforms/Scalar
Duncan Sands 3f329cb781 Teach GVN to also propagate switch cases. For example, in this code
switch (n) {
    case 27:
      do_something(x);
    ...
  }
the call do_something(x) will be replaced with do_something(27).  In
gcc-as-one-big-file this results in the removal of about 500 lines of
bitcode (about 0.02%), so has about 1/10 of the effect of propagating
branch conditions.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141360 91177308-0d34-0410-b5e6-96231b3b80d8
2011-10-07 08:29:06 +00:00
..
ADCE.cpp The landingpad instruction isn't dead simply because it's value isn't used. 2011-08-19 21:52:06 +00:00
BasicBlockPlacement.cpp
CMakeLists.txt Remove the old tail duplication pass. It is not used and is unable to update 2011-08-30 23:03:45 +00:00
CodeGenPrepare.cpp Fold two identical set lookups into one. No functionality change. 2011-09-29 23:40:12 +00:00
ConstantProp.cpp
CorrelatedValuePropagation.cpp
DCE.cpp
DeadStoreElimination.cpp Add comment to clarify the behavior of a helper in DSE. 2011-09-13 01:28:59 +00:00
EarlyCSE.cpp Change a bunch of isVolatile() checks to check for atomic load/store as well. 2011-09-12 20:23:13 +00:00
GVN.cpp Teach GVN to also propagate switch cases. For example, in this code 2011-10-07 08:29:06 +00:00
IndVarSimplify.cpp indvars should hoist [sz]ext because licm is not rerun. 2011-09-28 01:35:36 +00:00
JumpThreading.cpp Change a bunch of isVolatile() checks to check for atomic load/store as well. 2011-09-12 20:23:13 +00:00
LICM.cpp Use 'getFirstInsertionPt' when trying to insert new instructions during LICM. 2011-08-18 23:42:36 +00:00
LoopDeletion.cpp
LoopIdiomRecognize.cpp Correct grammar. 2011-09-13 00:44:16 +00:00
LoopInstSimplify.cpp
LoopRotation.cpp
LoopStrengthReduce.cpp LSR should avoid redundant edge splitting. 2011-10-04 03:50:44 +00:00
LoopUnrollPass.cpp Inlining and unrolling heuristics should be aware of free truncs. 2011-10-01 01:39:05 +00:00
LoopUnswitch.cpp Stop emitting instructions with the name "tmp" they eat up memory and have to be uniqued, without any benefit. 2011-09-27 20:39:19 +00:00
LowerAtomic.cpp Remove the old atomic instrinsics. autoupgrade functionality is included with this patch. 2011-10-06 23:20:49 +00:00
Makefile
MemCpyOptimizer.cpp Atomic load/store handling for the passes using memdep (GVN, DSE, memcpyopt). 2011-08-17 22:22:24 +00:00
ObjCARC.cpp When eliminating unnecessary retain+autorelease on return values, 2011-09-29 22:27:34 +00:00
Reassociate.cpp Silence a bunch (but not all) "variable written but not read" warnings 2011-08-12 14:54:45 +00:00
Reg2Mem.cpp
Scalar.cpp Remove the old tail duplication pass. It is not used and is unable to update 2011-08-30 23:03:45 +00:00
ScalarReplAggregates.cpp Stop emitting instructions with the name "tmp" they eat up memory and have to be uniqued, without any benefit. 2011-09-27 20:39:19 +00:00
SCCP.cpp Make sure IPSCCP never marks a tracked call as overdefined in SCCPSolver::ResolvedUndefsIn. If we do, we can end up in a situation where a function is resolved to return a constant, but the caller is marked overdefined, which confuses the code later. 2011-09-20 23:28:51 +00:00
SimplifyCFGPass.cpp
SimplifyLibCalls.cpp PR11061: Make simplifylibcalls fold strcmp("", x) correctly. 2011-10-05 22:27:16 +00:00
Sink.cpp Fix an issue with the IR sink pass found by inspection. (I'm not sure anyone is actually using this, but might as well fix it since I found the issue.) 2011-09-01 21:21:24 +00:00
TailRecursionElimination.cpp Don't do tail calls in a function that call setjmp. The stack might be 2011-05-16 03:05:33 +00:00