1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-21 12:02:58 +02:00
llvm-mirror/test/Transforms
Haicheng Wu d23d8b325b [JumpThreading] Split select that has constant conditions coming from the PHI node
Look for PHI/Select in the same BB of the form

bb:
  %p = phi [false, %bb1], [true, %bb2], [false, %bb3], [true, %bb4], ...
  %s = select p, trueval, falseval

And expand the select into a branch structure. This later enables
jump-threading over bb in this pass.

Using the similar approach of SimplifyCFG::FoldCondBranchOnPHI(), unfold
select if the associated PHI has at least one constant.  If the unfolded
select is not jump-threaded, it will be folded again in the later
optimizations.

llvm-svn: 257198
2016-01-08 19:39:39 +00:00
..
ADCE
AddDiscriminators Reimplement discriminator assignment algorithm. 2015-11-19 19:53:05 +00:00
AlignmentFromAssumptions Revert "Change memcpy/memset/memmove to have dest and source alignments." 2015-11-19 05:56:52 +00:00
ArgumentPromotion DI: Reverse direction of subprogram -> function edge. 2015-11-05 22:03:56 +00:00
AtomicExpand [IR] Add support for floating pointer atomic loads and stores 2015-12-16 00:49:36 +00:00
BBVectorize Have a single way for creating unique value names. 2015-11-22 00:16:24 +00:00
BDCE
BranchFolding Move branch folding test to a better location. 2015-12-03 19:41:25 +00:00
CodeExtractor
CodeGenPrepare Temporarily revert r257105 "[Verifier] Check that debug values have proper size" 2016-01-07 22:39:11 +00:00
ConstantHoisting
ConstantMerge
ConstProp IR: Make ConstantDataArray::getFP actually return a ConstantDataArray 2015-12-09 21:21:07 +00:00
CorrelatedValuePropagation Revert "Change memcpy/memset/memmove to have dest and source alignments." 2015-11-19 05:56:52 +00:00
CrossDSOCFI Cross-DSO control flow integrity (LLVM part). 2015-12-15 23:00:08 +00:00
DeadArgElim [OperandBundles] Have DeadArgElim play nice with operand bundles 2015-12-23 09:58:36 +00:00
DeadStoreElimination Temporarily revert r257105 "[Verifier] Check that debug values have proper size" 2016-01-07 22:39:11 +00:00
EarlyCSE Fix several accidental DOS line endings in source files 2016-01-03 17:22:03 +00:00
EliminateAvailableExternally
Float2Int [Float2Int] Don't operate on vector instructions 2015-12-09 21:08:18 +00:00
ForcedFunctionAttrs [attrs] Split off the forced attributes utility into its own pass that 2015-12-27 08:13:45 +00:00
FunctionAttrs [attrs] Split the late-revisit pattern for deducing norecurse in 2016-01-08 10:55:52 +00:00
FunctionImport [ThinLTO] Delay metadata materializtion in function importer 2016-01-08 14:17:41 +00:00
GCOVProfiling DI: Reverse direction of subprogram -> function edge. 2015-11-05 22:03:56 +00:00
GlobalDCE
GlobalOpt Also add unnamed_addr to functions. 2015-12-22 20:43:30 +00:00
GVN [IR] Reformulate LLVM's EH funclet IR 2015-12-12 05:38:55 +00:00
IndVarSimplify [IndVars] Have getInsertPointForUses preserve LCSSA 2015-12-08 00:13:21 +00:00
InferFunctionAttrs [BasicAA] Remove special casing of memset_pattern16 in favor of generic attribute inference 2016-01-06 04:53:16 +00:00
Inline Determine callee's hotness and adjust threshold based on that. NFC. 2015-12-22 00:32:35 +00:00
InstCombine Re-commit r257064, this time with a fixed assert 2016-01-08 11:11:04 +00:00
InstMerge
InstSimplify [MemoryBuiltins] Remove isOperatorNewLike by consolidating non-null inference handling 2016-01-04 22:49:23 +00:00
Internalize
IPConstantProp [SCCP] Don't violate the lattice invariants 2016-01-07 21:36:16 +00:00
IRCE
JumpThreading [JumpThreading] Split select that has constant conditions coming from the PHI node 2016-01-08 19:39:39 +00:00
LCSSA [WinEH] Update LCSSA to handle catchswitch with handlers inside and outside a loop 2015-12-18 18:12:35 +00:00
LICM [LICM] Fix a small oversight introduced in r256763 2016-01-04 23:16:22 +00:00
LoadCombine
LoopDeletion
LoopDistribute Allow LLE/LD and the loop versioning infrastructure to use SCEV predicates 2015-11-09 13:26:09 +00:00
LoopIdiom Revert "Change memcpy/memset/memmove to have dest and source alignments." 2015-11-19 05:56:52 +00:00
LoopInterchange
LoopLoadElim Allow LLE/LD and the loop versioning infrastructure to use SCEV predicates 2015-11-09 13:26:09 +00:00
LoopReroll DI: Reverse direction of subprogram -> function edge. 2015-11-05 22:03:56 +00:00
LoopRotate DI: Reverse direction of subprogram -> function edge. 2015-11-05 22:03:56 +00:00
LoopSimplify DI: Reverse direction of subprogram -> function edge. 2015-11-05 22:03:56 +00:00
LoopStrengthReduce [IR] Remove terminatepad 2015-12-14 18:34:23 +00:00
LoopUnroll LoopInfo: Simplify ownership of Loop objects 2016-01-08 19:08:53 +00:00
LoopUnswitch [IR] Reformulate LLVM's EH funclet IR 2015-12-12 05:38:55 +00:00
LoopVectorize [LoopVectorizer] Refine loop vectorizer's register usage calculator by ignoring specific instructions. 2015-12-15 22:45:09 +00:00
LowerAtomic
LowerBitSets [cfi] Fix LowerBitSets on 32-bit targets. 2015-12-21 22:14:04 +00:00
LowerExpectIntrinsic
LowerInvoke
LowerSwitch Have a single way for creating unique value names. 2015-11-22 00:16:24 +00:00
Mem2Reg [Mem2Reg] Respect optnone 2015-12-11 13:36:59 +00:00
MemCpyOpt Fix PR26051: Memcpy optimization should introduce a call to memcpy before the store destination position 2016-01-06 23:50:22 +00:00
MergeFunc [IR] Remove terminatepad 2015-12-14 18:34:23 +00:00
MetaRenamer Revert "Change memcpy/memset/memmove to have dest and source alignments." 2015-11-19 05:56:52 +00:00
NaryReassociate [NaryReassociate] allow candidate to have a different type 2015-12-18 21:36:30 +00:00
ObjCARC Revert "Change memcpy/memset/memmove to have dest and source alignments." 2015-11-19 05:56:52 +00:00
PartiallyInlineLibCalls
PGOProfile [PGO] make profile prefix even shorter and more readable 2015-12-15 00:32:56 +00:00
PhaseOrdering
PlaceSafepoints [Statepoints] Check for the "gc-leaf-function" attribute on call sites as well. 2016-01-05 23:59:08 +00:00
PruneEH [OperandBundles] Have PruneEH work correct with operand bundles. 2015-12-08 23:16:52 +00:00
Reassociate Instructions to be redone only if from the same BB 2016-01-07 23:22:55 +00:00
Reg2Mem
RewriteStatepointsForGC [SplitLandingPadPredecessors] Create a PHINode for the original landingpad only if it has some uses 2016-01-06 20:32:05 +00:00
SafeStack [safestack] Add option for non-TLS unsafe stack pointer. 2015-12-22 00:13:11 +00:00
SampleProfile SamplePGO - Add initial support for inliner annotations. 2015-11-27 23:14:51 +00:00
Scalarizer DI: Reverse direction of subprogram -> function edge. 2015-11-05 22:03:56 +00:00
ScalarRepl Revert "Change memcpy/memset/memmove to have dest and source alignments." 2015-11-19 05:56:52 +00:00
SCCP
SeparateConstOffsetFromGEP
SimplifyCFG [SimplifyCFG] Further improve our ability to remove redundant catchpads 2016-01-05 07:42:17 +00:00
Sink [IR] Reformulate LLVM's EH funclet IR 2015-12-12 05:38:55 +00:00
SLPVectorizer Temporarily revert r257105 "[Verifier] Check that debug values have proper size" 2016-01-07 22:39:11 +00:00
SpeculativeExecution
SROA Revert "Change memcpy/memset/memmove to have dest and source alignments." 2015-11-19 05:56:52 +00:00
StraightLineStrengthReduce
StripDeadPrototypes
StripSymbols DI: Reverse direction of subprogram -> function edge. 2015-11-05 22:03:56 +00:00
StructurizeCFG
TailCallElim [OperandBundles] Have TailCallElim play nice with operand bundles 2015-12-23 09:58:43 +00:00
TailDup
Util Clean up the processing of dbg.value in various places 2015-12-19 02:02:44 +00:00