1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-25 05:52:53 +02:00
llvm-mirror/lib/Transforms/Scalar
Shuxin Yang 76ccefc5f8 GVN proceeds in the presence of dead code.
This is how it ignores the dead code:
1) When a dead branch target, say block B, is identified, all the
    blocks dominated by B is dead as well.

2) The PHIs of those blocks in dominance-frontier(B) is updated such
   that the operands corresponding to dead predecessors are replaced
   by "UndefVal".

   Using lattice's jargon, the "UndefVal" is the "Top" in essence.
   Phi node like this "phi(v1 bb1, undef xx)" will be optimized into
   "v1" if v1 is constant, or v1 is an instruction which dominate this
   PHI node.

3) When analyzing the availability of a load L, all dead mem-ops which
   L depends on disguise as a load which evaluate exactly same value as L.

4) The dead mem-ops will be materialized as "UndefVal" during code motion.

llvm-svn: 191017
2013-09-19 17:22:51 +00:00
..
ADCE.cpp Use SmallVectorImpl::iterator/const_iterator instead of SmallVector to avoid specifying the vector size. 2013-07-04 01:31:24 +00:00
CMakeLists.txt Remove the long, long defunct IR block placement pass. 2013-09-14 09:28:14 +00:00
CodeGenPrepare.cpp Fix mistake in r190442. 2013-09-10 23:09:24 +00:00
ConstantProp.cpp
CorrelatedValuePropagation.cpp CVP: If we have a PHI with an incoming select, try to skip the select. 2013-02-24 15:34:43 +00:00
DCE.cpp
DeadStoreElimination.cpp Change GetPointerBaseWithConstantOffset's DataLayout argument from a 2013-01-31 02:00:45 +00:00
EarlyCSE.cpp Get rid of unused isPodLike definitions. 2013-09-11 00:36:54 +00:00
FlattenCFGPass.cpp Factor FlattenCFG out from SimplifyCFG 2013-08-06 02:43:45 +00:00
GlobalMerge.cpp Change tabs to spaces. 2013-07-22 21:11:30 +00:00
GVN.cpp GVN proceeds in the presence of dead code. 2013-09-19 17:22:51 +00:00
IndVarSimplify.cpp Teach ScalarEvolution about pointer address spaces 2013-09-10 19:55:24 +00:00
JumpThreading.cpp JumpThreading: Turn a select instruction into branching if it allows to thread one half of the select. 2013-08-07 10:29:38 +00:00
LICM.cpp
LLVMBuild.txt
LoopDeletion.cpp Use SmallVectorImpl& instead of SmallVector to avoid repeating small vector size. 2013-07-14 04:42:23 +00:00
LoopIdiomRecognize.cpp Teach loop-idiom about address space pointer sizes 2013-09-11 05:09:42 +00:00
LoopInstSimplify.cpp Remove #includes from the commonly used LoopInfo.h. 2013-02-09 01:04:28 +00:00
LoopRotation.cpp Rotate multi-exit loops even if the latch was simplified. 2013-05-06 17:58:18 +00:00
LoopStrengthReduce.cpp LSR: Fix the parameters used to compute the scaling factor cost. 2013-06-19 19:59:41 +00:00
LoopUnrollPass.cpp Add getUnrollingPreferences to TTI 2013-09-11 19:25:43 +00:00
LoopUnswitch.cpp Adjust file to the coding standard. 2013-08-06 17:03:42 +00:00
LowerAtomic.cpp
Makefile
MemCpyOptimizer.cpp MemCpyOptimizer: Use max legal int size instead of pointer size 2013-09-16 22:43:16 +00:00
PartiallyInlineLibCalls.cpp Turn MipsOptimizeMathLibCalls into a target-independent scalar transform 2013-08-23 10:27:02 +00:00
Reassociate.cpp Use switch instead of if. No functionality change. 2013-07-22 23:38:16 +00:00
Reg2Mem.cpp
Scalar.cpp Remove the long, long defunct IR block placement pass. 2013-09-14 09:28:14 +00:00
ScalarReplAggregates.cpp Revert r187191, which broke opt -mem2reg on the testcases included in PR16867. 2013-08-13 22:51:58 +00:00
SCCP.cpp Use SmallVectorImpl& instead of SmallVector to avoid repeating small vector size. 2013-07-14 04:42:23 +00:00
SimplifyCFGPass.cpp Reapply r188119 now that the bug it exposed is fixed. 2013-08-12 22:38:43 +00:00
Sink.cpp
SROA.cpp Revert r187191, which broke opt -mem2reg on the testcases included in PR16867. 2013-08-13 22:51:58 +00:00
StructurizeCFG.cpp Add 'const' qualifiers to static const char* variables. 2013-07-16 01:17:10 +00:00
TailRecursionElimination.cpp TRE: Move class into anonymous namespace. 2013-07-24 16:12:08 +00:00