1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-25 12:12:47 +01:00
llvm-mirror/lib/Transforms/Scalar
Roman Lebedev f757355f93 Revert BCmp Loop Idiom recognition transform (PR43870)
As discussed in https://bugs.llvm.org/show_bug.cgi?id=43870,
this transform is missing a crucial legality check:
the old (non-countable) loop would early-return upon first mismatch,
but there is no such guarantee for bcmp/memcmp.

We'd need to ensure that [PtrA, PtrA+NBytes) and [PtrB, PtrB+NBytes)
are fully dereferenceable memory regions. But that would limit
the transform to constant loop trip counts and would further
cripple it because dereferenceability analysis is *very* partial.

Furthermore, even if all that is done, every single test
would need to be rewritten from scratch.

So let's just give up.
2019-11-02 12:48:03 +03:00
..
ADCE.cpp
AlignmentFromAssumptions.cpp [Alignment][NFC] Remove StoreInst::setAlignment(unsigned) 2019-10-03 13:17:21 +00:00
BDCE.cpp
CallSiteSplitting.cpp Change TargetLibraryInfo analysis passes to always require Function 2019-09-07 03:09:36 +00:00
CMakeLists.txt Reapply r374743 with a fix for the ocaml binding 2019-10-14 16:15:14 +00:00
ConstantHoisting.cpp ConstantHoisting - Silence static analyzer dyn_cast<PointerType> null dereference warning. NFCI. 2019-09-22 17:45:05 +00:00
ConstantProp.cpp Change TargetLibraryInfo analysis passes to always require Function 2019-09-07 03:09:36 +00:00
CorrelatedValuePropagation.cpp [CVP] prevent propagating poison when substituting edge values into a phi (PR43802) 2019-10-28 08:58:28 -04:00
DCE.cpp [LegacyPassManager] Deprecate the BasicBlockPass/Manager. 2019-09-30 20:17:23 +00:00
DeadStoreElimination.cpp [Alignment][NFC] Convert StoreInst to MaybeAlign 2019-10-22 12:55:32 +00:00
DivRemPairs.cpp [DivRemPairs] Don't assert that we won't ever get expanded-form rem pairs in different BB's (PR43500) 2019-09-29 15:25:24 +00:00
EarlyCSE.cpp [EarlyCSE] Pass preserves AA. 2019-09-30 17:08:40 +00:00
FlattenCFGPass.cpp Don't use invalidated iterators in FlattenCFGPass 2019-09-19 19:39:42 +00:00
Float2Int.cpp [Float2Int] avoid crashing on unreachable code (PR38502) 2019-09-19 16:31:17 +00:00
GuardWidening.cpp GuardWidening - silence static analyzer null dereference warning with assertion. NFCI. 2019-10-21 17:15:37 +00:00
GVN.cpp [Alignment][NFC] Convert LoadInst to MaybeAlign 2019-10-22 12:35:55 +00:00
GVNHoist.cpp GVNHoist - silence static analyzer dyn_cast<> null dereference warning in hasEHOrLoadsOnPath call. NFCI. 2019-10-21 17:15:49 +00:00
GVNSink.cpp
InductiveRangeCheckElimination.cpp
IndVarSimplify.cpp [SCEV] Expose and use maximum constant exit counts for individual loop exits 2019-10-24 19:07:33 -07:00
InferAddressSpaces.cpp
InstSimplifyPass.cpp Change TargetLibraryInfo analysis passes to always require Function 2019-09-07 03:09:36 +00:00
IVUsersPrinter.cpp
JumpThreading.cpp [Alignment][NFC] Convert LoadInst to MaybeAlign 2019-10-22 12:35:55 +00:00
LICM.cpp [LICM] Invalidate SCEV upon instruction hoisting 2019-10-31 17:37:53 +07:00
LLVMBuild.txt
LoopAccessAnalysisPrinter.cpp
LoopDataPrefetch.cpp
LoopDeletion.cpp
LoopDistribute.cpp
LoopFuse.cpp [LoopFusion] Add ability to fuse guarded loops 2019-09-26 21:42:45 +00:00
LoopIdiomRecognize.cpp Revert BCmp Loop Idiom recognition transform (PR43870) 2019-11-02 12:48:03 +03:00
LoopInstSimplify.cpp Change TargetLibraryInfo analysis passes to always require Function 2019-09-07 03:09:36 +00:00
LoopInterchange.cpp [LoopInterchange] Drop unused splitInnerLoopHeader declaration. 2019-09-11 10:32:15 +00:00
LoopLoadElimination.cpp [Alignment][NFC] Convert LoadInst to MaybeAlign 2019-10-22 12:35:55 +00:00
LoopPassManager.cpp
LoopPredication.cpp
LoopRerollPass.cpp Change TargetLibraryInfo analysis passes to always require Function 2019-09-07 03:09:36 +00:00
LoopRotation.cpp [LoopRotate] Unconditionally get DomTree. 2019-10-08 11:54:42 +00:00
LoopSimplifyCFG.cpp
LoopSink.cpp
LoopStrengthReduce.cpp recommit: [LoopVectorize][PowerPC] Estimate int and float register pressure separately in loop-vectorize 2019-10-12 02:53:04 +00:00
LoopUnrollAndJamPass.cpp [Unroll] Do NOT unroll a loop with small runtime upperbound 2019-09-26 21:40:27 +00:00
LoopUnrollPass.cpp [Unroll] Do NOT unroll a loop with small runtime upperbound 2019-09-26 21:40:27 +00:00
LoopUnswitch.cpp Use isConvergent helper instead of directly checking attribute 2019-10-27 19:39:14 -07:00
LoopVersioningLICM.cpp
LowerAtomic.cpp
LowerConstantIntrinsics.cpp Reapply r374743 with a fix for the ocaml binding 2019-10-14 16:15:14 +00:00
LowerExpectIntrinsic.cpp LowerExpectIntrinsic handlePhiDef - silence static analyzer dyn_cast<PHINode> null dereference warning. NFCI. 2019-10-02 16:03:45 +00:00
LowerGuardIntrinsic.cpp
LowerWidenableCondition.cpp
MakeGuardsExplicit.cpp
MemCpyOptimizer.cpp [MemCpyOpt] Fixing Incorrect Code Motion while Handling Aggregate Type Values 2019-10-21 10:00:34 +00:00
MergedLoadStoreMotion.cpp
MergeICmps.cpp Revert "Reland "r364412 [ExpandMemCmp][MergeICmps] Move passes out of CodeGen into opt pipeline."" 2019-09-10 10:39:09 +00:00
NaryReassociate.cpp Change TargetLibraryInfo analysis passes to always require Function 2019-09-07 03:09:36 +00:00
NewGVN.cpp [NewGVN] Check that call has an access. 2019-10-15 17:25:36 +00:00
PartiallyInlineLibCalls.cpp Change TargetLibraryInfo analysis passes to always require Function 2019-09-07 03:09:36 +00:00
PlaceSafepoints.cpp Change TargetLibraryInfo analysis passes to always require Function 2019-09-07 03:09:36 +00:00
Reassociate.cpp
Reg2Mem.cpp
RewriteStatepointsForGC.cpp [Local] Remove unused LazyValueInfo pointer from removeUnreachableBlock. 2019-10-02 16:58:13 +00:00
Scalar.cpp Reapply r374743 with a fix for the ocaml binding 2019-10-14 16:15:14 +00:00
Scalarizer.cpp
SCCP.cpp SCCP - silence static analyzer dyn_cast<StructType> null dereference warning. NFCI. 2019-09-27 15:49:10 +00:00
SeparateConstOffsetFromGEP.cpp Change TargetLibraryInfo analysis passes to always require Function 2019-09-07 03:09:36 +00:00
SimpleLoopUnswitch.cpp SimpleLoopUnswitch - fix uninitialized variable and null dereference warnings. NFCI. 2019-10-16 10:38:18 +00:00
SimplifyCFGPass.cpp
Sink.cpp Use isConvergent helper instead of directly checking attribute 2019-10-27 19:39:14 -07:00
SpeculateAroundPHIs.cpp
SpeculativeExecution.cpp
SROA.cpp [Alignment][NFC] Convert AllocaInst to MaybeAlign 2019-10-25 22:41:34 +02:00
StraightLineStrengthReduce.cpp
StructurizeCFG.cpp
TailRecursionElimination.cpp [Alignment][NFC] Finish transition for Loads 2019-10-21 15:10:26 +00:00
WarnMissedTransforms.cpp