1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-26 06:22:56 +02:00
llvm-mirror/lib/Transforms/Scalar
David Callahan 48aa68965f [ADCE] Modify data structures to support removing control flow
Summary:
This is part of a serious of patches to evolve ADCE.cpp to support
removing of unnecessary control flow.

This patch changes the data structures to hold liveness information to
support the additional information we will eventually need. In
particular we now have a notion of basic blocks being live because
they contain a live operations. This will eventually feed into control
dependence analysis of which branches are live. We cater to getting
from instructions to associated block information and from blocks to
information about their terminators.

This patch also changes the structure of the main loop of the
algorithm so that it alternates propagating liveness between
instructions and usign control dependence information to mark branches
live.

We force all terminators live for now until we add code to handlinge
removing control flow in a later patch.

No changes to effective behavior with this patch

Previous patches:

D23065 [ADCE] Refactor anticipating new functionality (NFC)
D23102 [ADCE] Refactoring for new functionality (NFC)

Reviewers: nadav, majnemer, mehdi_amini

Subscribers: freik, twoh, llvm-commits

Differential Revision: https://reviews.llvm.org/D23225

llvm-svn: 278807
2016-08-16 14:31:51 +00:00
..
ADCE.cpp [ADCE] Modify data structures to support removing control flow 2016-08-16 14:31:51 +00:00
AlignmentFromAssumptions.cpp Add some comments linking back to PR28400. 2016-08-08 07:03:49 +00:00
BDCE.cpp [PM] Normalize FIXMEs for missing PreserveCFG to have the same wording. 2016-06-28 00:54:12 +00:00
CMakeLists.txt code hoisting pass based on GVN 2016-07-15 13:45:20 +00:00
ConstantHoisting.cpp This implements a more optimal algorithm for selecting a base constant in 2016-07-14 07:44:20 +00:00
ConstantProp.cpp Don't remove side effecting instructions due to ConstantFoldInstruction 2016-07-22 04:54:44 +00:00
CorrelatedValuePropagation.cpp Teach CorrelatedValuePropagation to mark adds as no wrap 2016-08-10 13:08:34 +00:00
DCE.cpp Consistently use FunctionAnalysisManager 2016-08-09 00:28:15 +00:00
DeadStoreElimination.cpp [DSE] Don't remove stores made live by a call which unwinds. 2016-08-12 01:09:53 +00:00
EarlyCSE.cpp [EarlyCSE] Teach about CSE'ing over invariant.start intrinsics 2016-08-09 20:00:47 +00:00
FlattenCFGPass.cpp
Float2Int.cpp [PM] Normalize FIXMEs for missing PreserveCFG to have the same wording. 2016-06-28 00:54:12 +00:00
GuardWidening.cpp Consistently use FunctionAnalysisManager 2016-08-09 00:28:15 +00:00
GVN.cpp Consistently use FunctionAnalysisManager 2016-08-09 00:28:15 +00:00
GVNHoist.cpp Test commit 2016-08-13 11:56:50 +00:00
InductiveRangeCheckElimination.cpp [IRCE] Change variable grouping; NFC 2016-08-14 01:04:50 +00:00
IndVarSimplify.cpp [IndVars] Ignore (s|z)exts that don't extend the induction variable 2016-08-13 00:58:31 +00:00
JumpThreading.cpp Use the range variant of find instead of unpacking begin/end 2016-08-11 22:21:41 +00:00
LICM.cpp Fix typos /NFC 2016-08-11 22:34:00 +00:00
LLVMBuild.txt
LoadCombine.cpp [LoadCombine] Simplify code with a brace init. NFC. 2016-08-06 12:11:11 +00:00
LoopDataPrefetch.cpp [PM] Port LoopDataPrefetch to new pass manager 2016-08-13 04:11:27 +00:00
LoopDeletion.cpp Consistently use LoopAnalysisManager 2016-08-09 00:28:52 +00:00
LoopDistribute.cpp [OptDiag,LDist] Convert remaining opt remarks to use the new API 2016-07-21 21:21:34 +00:00
LoopIdiomRecognize.cpp Target independent codesize heuristics for Loop Idiom Recognition 2016-08-11 18:28:33 +00:00
LoopInstSimplify.cpp Consistently use LoopAnalysisManager 2016-08-09 00:28:52 +00:00
LoopInterchange.cpp Use range algorithms instead of unpacking begin/end 2016-08-11 21:15:00 +00:00
LoopLoadElimination.cpp Use the range variant of transform instead of unpacking begin/end 2016-08-12 04:32:42 +00:00
LoopRerollPass.cpp Use the range variant of find instead of unpacking begin/end 2016-08-11 22:21:41 +00:00
LoopRotation.cpp Consistently use LoopAnalysisManager 2016-08-09 00:28:52 +00:00
LoopSimplifyCFG.cpp Consistently use LoopAnalysisManager 2016-08-09 00:28:52 +00:00
LoopStrengthReduce.cpp [LSR] Don't try and create post-inc expressions on non-rotated loops 2016-08-15 07:53:03 +00:00
LoopUnrollPass.cpp Consistently use LoopAnalysisManager 2016-08-09 00:28:52 +00:00
LoopUnswitch.cpp Apply clang-tidy's modernize-loop-convert to most of lib/Transforms. 2016-06-26 12:28:59 +00:00
LoopVersioningLICM.cpp Rename LoopAccessAnalysis to LoopAccessLegacyAnalysis /NFC 2016-07-08 20:55:26 +00:00
LowerAtomic.cpp [PM] Remove support for omitting the AnalysisManager argument to new 2016-06-17 00:11:01 +00:00
LowerExpectIntrinsic.cpp [PM] Remove support for omitting the AnalysisManager argument to new 2016-06-17 00:11:01 +00:00
LowerGuardIntrinsic.cpp [PM] Port LowerGuardIntrinsic to the new PM. 2016-07-28 22:08:41 +00:00
MemCpyOptimizer.cpp Use range algorithms instead of unpacking begin/end 2016-08-11 21:15:00 +00:00
MergedLoadStoreMotion.cpp Consistently use FunctionAnalysisManager 2016-08-09 00:28:15 +00:00
NaryReassociate.cpp Add some comments linking back to PR28400. 2016-08-08 07:03:49 +00:00
PartiallyInlineLibCalls.cpp Consistently use FunctionAnalysisManager 2016-08-09 00:28:15 +00:00
PlaceSafepoints.cpp Apply clang-tidy's modernize-loop-convert to most of lib/Transforms. 2016-06-26 12:28:59 +00:00
Reassociate.cpp [PM] Normalize FIXMEs for missing PreserveCFG to have the same wording. 2016-06-28 00:54:12 +00:00
Reg2Mem.cpp Apply clang-tidy's modernize-loop-convert to most of lib/Transforms. 2016-06-26 12:28:59 +00:00
RewriteStatepointsForGC.cpp Use the range variant of remove_if instead of unpacking begin/end 2016-08-12 04:32:37 +00:00
Scalar.cpp [PM] Port LoopDataPrefetch to new pass manager 2016-08-13 04:11:27 +00:00
Scalarizer.cpp Scalarizer: Support scalarizing intrinsics 2016-07-25 20:02:54 +00:00
SCCP.cpp Use range algorithms instead of unpacking begin/end 2016-08-11 21:15:00 +00:00
SeparateConstOffsetFromGEP.cpp Apply clang-tidy's modernize-loop-convert to most of lib/Transforms. 2016-06-26 12:28:59 +00:00
SimplifyCFGPass.cpp Consistently use FunctionAnalysisManager 2016-08-09 00:28:15 +00:00
Sink.cpp Consistently use FunctionAnalysisManager 2016-08-09 00:28:15 +00:00
SpeculativeExecution.cpp [PM] Port SpeculativeExecution to the new PM 2016-08-01 21:48:33 +00:00
SROA.cpp Use the range variant of remove_if instead of unpacking begin/end 2016-08-12 04:32:37 +00:00
StraightLineStrengthReduce.cpp [SLSR] Call getPointerSizeInBits with the correct address space. 2016-07-11 18:13:28 +00:00
StructurizeCFG.cpp Use the range variant of find instead of unpacking begin/end 2016-08-11 22:21:41 +00:00
TailRecursionElimination.cpp Use the range variant of find/find_if instead of unpacking begin/end 2016-08-12 03:55:06 +00:00