1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 11:13:28 +01:00
llvm-mirror/lib/Transforms/Scalar
Juneyoung Lee 1112f9ad6f [JumpThreading] Allow duplicating a basic block into preds when its branch condition is freeze(phi)
This is the last JumpThreading patch for getting the performance numbers shown at
https://reviews.llvm.org/D84940#2184653 .

This patch makes ProcessBlock call ProcessBranchOnPHI when the branch condition
is freeze(phi) as well (originally it calls the function when the condition is
phi only).

Since what ProcessBranchOnPHI does is to duplicate the basic block into
predecessors if profitable, it is still valid when the condition is freeze(phi)
too.

```
    p = phi [a, pred1] [b, pred2]
    p.fr = freeze p
    br p.fr, ...
=>
  pred1:
    p.fr = freeze a
    br p.fr, ...
  pred2:
    p.fr2 = freeze b
    br p.fr2, ...
```

Reviewed By: efriedma

Differential Revision: https://reviews.llvm.org/D85029
2020-08-06 09:51:17 +09:00
..
ADCE.cpp
AlignmentFromAssumptions.cpp Temporarily Revert "[AssumeBundles] Use operand bundles to encode alignment assumptions" 2020-07-16 11:54:04 -07:00
BDCE.cpp
CallSiteSplitting.cpp
CMakeLists.txt
ConstantHoisting.cpp Revert rG5dd566b7c7b78bd- "PassManager.h - remove unnecessary Function.h/Module.h includes. NFCI." 2020-07-24 13:02:33 +01:00
ConstantProp.cpp
CorrelatedValuePropagation.cpp [NewPM][LVI] Abandon LVI after CVP 2020-08-01 23:47:46 +02:00
DCE.cpp
DeadStoreElimination.cpp [NFC] Remove unused GetUnderlyingObject paramenter 2020-07-31 02:10:03 -07:00
DivRemPairs.cpp
EarlyCSE.cpp
FlattenCFGPass.cpp
Float2Int.cpp
GuardWidening.cpp
GVN.cpp [GVN] Rewrite IsValueFullyAvailableInBlock(): no recursion, less false-negatives 2020-07-28 10:19:28 +03:00
GVNHoist.cpp
GVNSink.cpp Use llvm::is_contained where appropriate (NFC) 2020-07-27 10:20:44 -07:00
InductiveRangeCheckElimination.cpp
IndVarSimplify.cpp [SCEV][IndVarSimplify] insert point should not be block front. 2020-07-17 22:25:10 -04:00
InferAddressSpaces.cpp
InstSimplifyPass.cpp [Hexagon] Use InstSimplify instead of ConstantProp 2020-08-04 15:42:39 -07:00
IVUsersPrinter.cpp
JumpThreading.cpp [JumpThreading] Allow duplicating a basic block into preds when its branch condition is freeze(phi) 2020-08-06 09:51:17 +09:00
LICM.cpp [NFC] Remove unused GetUnderlyingObject paramenter 2020-07-31 02:10:03 -07:00
LLVMBuild.txt
LoopAccessAnalysisPrinter.cpp
LoopDataPrefetch.cpp
LoopDeletion.cpp
LoopDistribute.cpp
LoopFuse.cpp [Loop Peeling] Separate the Loop Peeling Utilities from the Loop Unrolling Utilities 2020-07-31 18:31:58 +00:00
LoopIdiomRecognize.cpp [NFC] Remove unused GetUnderlyingObject paramenter 2020-07-31 02:10:03 -07:00
LoopInstSimplify.cpp
LoopInterchange.cpp Use llvm::is_contained where appropriate (NFC) 2020-08-01 21:51:06 -07:00
LoopLoadElimination.cpp [LLE] std::inserter doesn't work with SmallSet, so don't use it. 2020-07-20 15:47:42 +02:00
LoopPassManager.cpp [NewPM][PassInstrument] Add PrintPass callback to StandardInstrumentations 2020-07-30 10:07:57 -07:00
LoopPredication.cpp
LoopRerollPass.cpp
LoopRotation.cpp
LoopSimplifyCFG.cpp [LoopSimplifyCFG] Delete landing pads in dead exit blocks 2020-07-29 18:36:51 +07:00
LoopSink.cpp
LoopStrengthReduce.cpp Reland "[SCEVExpander] Add option to preserve LCSSA directly." 2020-07-29 20:41:53 +01:00
LoopUnrollAndJamPass.cpp [Loop Peeling] Separate the Loop Peeling Utilities from the Loop Unrolling Utilities 2020-07-31 18:31:58 +00:00
LoopUnrollPass.cpp [Loop Peeling] Separate the Loop Peeling Utilities from the Loop Unrolling Utilities 2020-07-31 18:31:58 +00:00
LoopUnswitch.cpp
LoopVersioningLICM.cpp
LowerAtomic.cpp
LowerConstantIntrinsics.cpp
LowerExpectIntrinsic.cpp
LowerGuardIntrinsic.cpp
LowerMatrixIntrinsics.cpp [NFC] Remove unused GetUnderlyingObject paramenter 2020-07-31 02:10:03 -07:00
LowerWidenableCondition.cpp
MakeGuardsExplicit.cpp
MemCpyOptimizer.cpp
MergedLoadStoreMotion.cpp
MergeICmps.cpp
NaryReassociate.cpp
NewGVN.cpp [PredicateInfo] Add a method to interpret predicate as cmp constraint 2020-07-19 15:34:32 +02:00
PartiallyInlineLibCalls.cpp
PlaceSafepoints.cpp
Reassociate.cpp
Reg2Mem.cpp
RewriteStatepointsForGC.cpp [Analysis] TTI: Add CastContextHint for getCastInstrCost 2020-07-29 13:32:53 +01:00
Scalar.cpp [NewPM][LoopVersioning] Port LoopVersioning to NPM 2020-08-03 10:32:09 -07:00
Scalarizer.cpp
SCCP.cpp [SCCP] Propagate inequalities 2020-08-04 20:20:52 +02:00
SeparateConstOffsetFromGEP.cpp
SimpleLoopUnswitch.cpp [SimpleLoopUnswitch][NFC] Add option to always drop make.implicit metadata in non-trivial unswitching and save compile time 2020-08-04 10:16:40 +07:00
SimplifyCFGPass.cpp [SimplifyCFG][LoopRotate] SimplifyCFG: disable common instruction hoisting by default, enable late in pipeline 2020-07-29 20:05:30 +03:00
Sink.cpp
SpeculateAroundPHIs.cpp
SpeculativeExecution.cpp
SROA.cpp Teach SROA to handle allocas with more than one dbg.declare. 2020-08-04 15:54:51 -07:00
StraightLineStrengthReduce.cpp
StructurizeCFG.cpp Revert rG5dd566b7c7b78bd- "PassManager.h - remove unnecessary Function.h/Module.h includes. NFCI." 2020-07-24 13:02:33 +01:00
TailRecursionElimination.cpp
WarnMissedTransforms.cpp