llvm/lib/Transforms/Scalar
Michael Zolotukhin 08d1cff7c6 Factor out UnrollAnalyzer to Analysis, and add unit tests for it.
Summary:
Unrolling Analyzer is already pretty complicated, and it becomes harder and harder to exercise it with usual IR tests, as with them we can only check the final decision: whether the loop is unrolled or not. This change factors this framework out from LoopUnrollPass to analyses, which allows to use unit tests.
The change itself is supposed to be NFC, except adding a couple of tests.

I plan to add more tests as I add new functionality and find/fix bugs.

Reviewers: chandlerc, hfinkel, sanjoy

Subscribers: zzheng, sanjoy, llvm-commits

Differential Revision: http://reviews.llvm.org/D16623

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@260169 91177308-0d34-0410-b5e6-96231b3b80d8
2016-02-08 23:03:59 +00:00
..
ADCE.cpp Avoid overly large SmallPtrSet/SmallSet 2016-01-30 01:24:31 +00:00
AlignmentFromAssumptions.cpp [SCEV] Add and use SCEVConstant::getAPInt; NFCI 2015-12-17 20:28:46 +00:00
BDCE.cpp Add GlobalsAA as preserved to a bunch of transforms 2015-09-10 10:22:12 +00:00
CMakeLists.txt New Loop Versioning LICM Pass 2016-02-06 07:47:48 +00:00
ConstantHoisting.cpp Scalar: Remove some implicit ilist iterator conversions, NFC 2015-10-13 18:26:00 +00:00
ConstantProp.cpp
CorrelatedValuePropagation.cpp [AttributeSet] Overload AttributeSet::addAttribute to reduce compile 2015-12-02 06:58:49 +00:00
DCE.cpp Scalar: Remove some implicit ilist iterator conversions, NFC 2015-10-13 18:26:00 +00:00
DeadStoreElimination.cpp Revert r255247, r255265, and r255286 due to serious compile-time regressions. 2015-12-11 18:39:41 +00:00
EarlyCSE.cpp [EarlyCSE] DSE of atomic unordered stores 2015-12-17 18:50:50 +00:00
FlattenCFGPass.cpp Scalar: Remove some implicit ilist iterator conversions, NFC 2015-10-13 18:26:00 +00:00
Float2Int.cpp [Float2Int] Don't operate on vector instructions 2015-12-09 21:08:18 +00:00
GVN.cpp [GVN] Add clarifying assert [NFCI] 2016-01-29 02:23:10 +00:00
InductiveRangeCheckElimination.cpp Scalar: Remove some implicit ilist iterator conversions, NFC 2015-10-13 18:26:00 +00:00
IndVarSimplify.cpp [IndVars] Hoist DataLayout load out of loop; NFC 2016-01-27 17:05:09 +00:00
JumpThreading.cpp [JumpThreading] Change a return of ComputeValueKnownInPredecessors() 2016-02-08 17:00:39 +00:00
LICM.cpp [LICM] Keep metadata on control equivalent hoists 2016-01-28 15:51:58 +00:00
LLVMBuild.txt Update libdeps in LLVMipo and LLVMScalarOpts, corresponding to r245940. 2015-08-25 17:11:17 +00:00
LoadCombine.cpp [PM/AA] Rebuild LLVM's alias analysis infrastructure in a way compatible 2015-09-09 17:55:00 +00:00
LoopDeletion.cpp LoopInfo: Simplify ownership of Loop objects 2016-01-08 19:08:53 +00:00
LoopDistribute.cpp LPM: Stop threading Pass * through all of the loop utility APIs. NFC 2015-12-15 19:40:57 +00:00
LoopIdiomRecognize.cpp [LIR] Add support for structs and hand unrolled loops 2016-01-26 02:27:47 +00:00
LoopInstSimplify.cpp Scalar: Remove remaining ilist iterator implicit conversions 2015-10-13 19:26:58 +00:00
LoopInterchange.cpp LPM: Stop threading Pass * through all of the loop utility APIs. NFC 2015-12-15 19:40:57 +00:00
LoopLoadElimination.cpp [LoopLoadElim] Don't allow versioning when optForSize 2016-02-05 01:14:05 +00:00
LoopRerollPass.cpp Enable loopreroll to rerool loop with pointer induction variable. 2016-01-25 19:43:45 +00:00
LoopRotation.cpp LoopRotate: Convert the methods of LoopRotate to utility functions. NFC 2015-12-14 23:22:48 +00:00
LoopSimplifyCFG.cpp Fix typo in LoopSimplifyCFG 2016-01-29 23:12:52 +00:00
LoopStrengthReduce.cpp [LoopStrengthReduce] Don't rewrite PHIs with incoming values from CatchSwitches 2016-02-03 21:30:34 +00:00
LoopUnrollPass.cpp Factor out UnrollAnalyzer to Analysis, and add unit tests for it. 2016-02-08 23:03:59 +00:00
LoopUnswitch.cpp LoopPass: Simplify the API for adding a new loop. NFC 2015-10-22 21:21:32 +00:00
LoopVersioningLICM.cpp New Loop Versioning LICM Pass 2016-02-06 07:47:48 +00:00
LowerAtomic.cpp Scalar: Remove remaining ilist iterator implicit conversions 2015-10-13 19:26:58 +00:00
LowerExpectIntrinsic.cpp
MemCpyOptimizer.cpp Fix PR26051: Memcpy optimization should introduce a call to memcpy before the store destination position 2016-01-06 23:50:22 +00:00
MergedLoadStoreMotion.cpp Fix some Clang-tidy modernize warnings, other minor fixes. 2015-11-04 22:32:32 +00:00
NaryReassociate.cpp [opaque pointer types] [NFC] GEP: replace get(Pointer)ElementType uses with get{Source,Result}ElementType. 2016-01-19 17:28:00 +00:00
PartiallyInlineLibCalls.cpp Scalar: Remove remaining ilist iterator implicit conversions 2015-10-13 19:26:58 +00:00
PlaceSafepoints.cpp [PlaceSafepoints] Use DEBUG() instead of TraceLSP 2016-01-28 23:49:27 +00:00
Reassociate.cpp Reassociate: Reprocess RedoInsts after each inst 2016-01-26 18:42:36 +00:00
Reg2Mem.cpp Scalar: Remove remaining ilist iterator implicit conversions 2015-10-13 19:26:58 +00:00
RewriteStatepointsForGC.cpp [RS4GC] Pass DenseMap by reference, NFC 2016-02-05 01:42:52 +00:00
Scalar.cpp New Loop Versioning LICM Pass 2016-02-06 07:47:48 +00:00
Scalarizer.cpp Scalar: Remove remaining ilist iterator implicit conversions 2015-10-13 19:26:58 +00:00
ScalarReplAggregates.cpp [opaque pointer types] [NFC] DataLayout::getIndexedOffset: take source element type instead of pointer type and rename to getIndexedOffsetInType. 2016-01-22 03:08:27 +00:00
SCCP.cpp Fix build bot breakage 2016-01-24 16:46:53 +00:00
SeparateConstOffsetFromGEP.cpp [opaque pointer types] [NFC] GEP: replace get(Pointer)ElementType uses with get{Source,Result}ElementType. 2016-01-19 17:28:00 +00:00
SimplifyCFGPass.cpp PM: Fix an inverted condition in simplifyFunctionCFG 2016-01-15 21:21:39 +00:00
Sink.cpp [IR] Reformulate LLVM's EH funclet IR 2015-12-12 05:38:55 +00:00
SpeculativeExecution.cpp Scalar: Remove remaining ilist iterator implicit conversions 2015-10-13 19:26:58 +00:00
SROA.cpp Fix buildbot failure introduced by 258010. Remove local variables became unused. 2016-01-17 12:59:40 +00:00
StraightLineStrengthReduce.cpp [opaque pointer types] [NFC] GEP: replace get(Pointer)ElementType uses with get{Source,Result}ElementType. 2016-01-19 17:28:00 +00:00
StructurizeCFG.cpp Scalar: Remove remaining ilist iterator implicit conversions 2015-10-13 19:26:58 +00:00
TailRecursionElimination.cpp Change isSafeToLoadUnconditionally arguments order. Separated from http://reviews.llvm.org/D10920. 2016-01-15 15:27:46 +00:00