llvm-project/llvm/lib/Transforms/Scalar
Adam Nemet d6b7e29815 [LoopAccesses] Create the analysis pass
This is a function pass that runs the analysis on demand.  The analysis
can be initiated by querying the loop access info via LAA::getInfo.  It
either returns the cached info or runs the analysis.

Symbolic stride information continues to reside outside of this analysis
pass. We may move it inside later but it's not a priority for me right
now.  The idea is that Loop Distribution won't support run-time stride
checking at least initially.

This means that when querying the analysis, symbolic stride information
can be provided optionally.  Whether stride information is used can
invalidate the cache entry and rerun the analysis.  Note that if the
loop does not have any symbolic stride, the entry should be preserved
across Loop Distribution and LV.

Since currently the only user of the pass is LV, I just check that the
symbolic stride information didn't change when using a cached result.

On the LV side, LoopVectorizationLegality requests the info object
corresponding to the loop from the analysis pass.  A large chunk of the
diff is due to LAI becoming a pointer from a reference.

A test will be added as part of the -analyze patch.

Also tested that with AVX, we generate identical assembly output for the
testsuite (including the external testsuite) before and after.

This is part of the patchset that converts LoopAccessAnalysis into an
actual analysis pass.

llvm-svn: 229626
2015-02-18 03:43:24 +00:00
..
ADCE.cpp [ADCE] Don't indent inside an anonymous namespace 2015-02-16 18:08:00 +00:00
AlignmentFromAssumptions.cpp [PM] Split the LoopInfo object apart from the legacy pass, creating 2015-01-17 14:16:18 +00:00
BDCE.cpp [BDCE] Don't forget uses of root instructions seen before the instruction itself 2015-02-18 03:12:28 +00:00
CMakeLists.txt [BDCE] Add a bit-tracking DCE pass 2015-02-17 01:36:59 +00:00
ConstantHoisting.cpp [optnone] Skip pass Constant Hoisting on optnone functions. 2015-02-14 15:11:48 +00:00
ConstantProp.cpp [PM] Separate the TargetLibraryInfo object from the immutable pass. 2015-01-15 10:41:28 +00:00
CorrelatedValuePropagation.cpp Make use of @llvm.assume from LazyValueInfo 2014-09-07 20:29:59 +00:00
DCE.cpp [PM] Separate the TargetLibraryInfo object from the immutable pass. 2015-01-15 10:41:28 +00:00
DeadStoreElimination.cpp [PM] Move TargetLibraryInfo into the Analysis library. 2015-01-15 02:16:27 +00:00
EarlyCSE.cpp Removing LLVM_DELETED_FUNCTION, as MSVC 2012 was the last reason for requiring the macro. NFC; LLVM edition. 2015-02-15 22:54:22 +00:00
FlattenCFGPass.cpp [Modules] Fix potential ODR violations by sinking the DEBUG_TYPE 2014-04-22 02:55:47 +00:00
GVN.cpp Allow PRE to insert no-cost phi nodes 2015-02-03 20:37:08 +00:00
IndVarSimplify.cpp [multiversion] Thread a function argument through all the callers of the 2015-02-01 12:01:35 +00:00
InductiveRangeCheckElimination.cpp Make helper functions/classes/globals static. NFC. 2015-02-06 17:51:54 +00:00
JumpThreading.cpp [PM] Replace the Pass argument to SplitEdge with specific analyses used 2015-01-19 12:36:53 +00:00
LICM.cpp [PM] Split the LoopInfo object apart from the legacy pass, creating 2015-01-17 14:16:18 +00:00
LLVMBuild.txt Update libdeps since TLI was moved from Target to Analysis in r226078. 2015-01-15 05:21:00 +00:00
LoadCombine.cpp Use AA in LoadCombine 2014-11-03 23:19:16 +00:00
LoopDeletion.cpp [PM] Split the LoopInfo object apart from the legacy pass, creating 2015-01-17 14:16:18 +00:00
LoopIdiomRecognize.cpp LoopIdiom: Use utility functions. 2015-02-07 21:37:08 +00:00
LoopInstSimplify.cpp [LPM] Stop using the string based preservation API. It is an 2015-01-28 04:57:56 +00:00
LoopRerollPass.cpp [LoopReroll] Relax some assumptions a little. 2015-02-16 17:02:00 +00:00
LoopRotation.cpp [multiversion] Thread a function argument through all the callers of the 2015-02-01 12:01:35 +00:00
LoopStrengthReduce.cpp [multiversion] Thread a function argument through all the callers of the 2015-02-01 12:01:35 +00:00
LoopUnrollPass.cpp Transforms: Canonicalize access to function attributes, NFC 2015-02-14 01:11:29 +00:00
LoopUnswitch.cpp Transforms: Canonicalize access to function attributes, NFC 2015-02-14 01:11:29 +00:00
LowerAtomic.cpp IR: add "cmpxchg weak" variant to support permitted failure. 2014-06-13 14:24:07 +00:00
LowerExpectIntrinsic.cpp [PM] Port LowerExpectIntrinsic to the new pass manager. 2015-01-24 11:13:02 +00:00
Makefile
MemCpyOptimizer.cpp Properly update AA metadata when performing call slot optimization 2015-02-07 17:54:36 +00:00
MergedLoadStoreMotion.cpp Fixed a bug in store sinking. 2015-02-17 13:10:05 +00:00
PartiallyInlineLibCalls.cpp [multiversion] Thread a function argument through all the callers of the 2015-02-01 12:01:35 +00:00
PlaceSafepoints.cpp [PM] Remove the old 'PassManager.h' header file at the top level of 2015-02-13 10:01:29 +00:00
Reassociate.cpp Reassociate: cannot negate a INT_MIN value 2015-02-11 19:54:44 +00:00
Reg2Mem.cpp Standardize {pred,succ,use,user}_empty() 2015-01-13 03:46:47 +00:00
SCCP.cpp [PM] Separate the TargetLibraryInfo object from the immutable pass. 2015-01-15 10:41:28 +00:00
SROA.cpp Debug info: When updating debug info during SROA, do not emit debug info 2015-02-09 23:57:22 +00:00
SampleProfile.cpp [PM] Split the LoopInfo object apart from the legacy pass, creating 2015-01-17 14:16:18 +00:00
Scalar.cpp [LoopAccesses] Create the analysis pass 2015-02-18 03:43:24 +00:00
ScalarReplAggregates.cpp [PM] Split the AssumptionTracker immutable pass into two separate APIs: 2015-01-04 12:03:27 +00:00
Scalarizer.cpp Revert "IR: MDNode => Value" 2014-11-11 21:30:22 +00:00
SeparateConstOffsetFromGEP.cpp [multiversion] Thread a function argument through all the callers of the 2015-02-01 12:01:35 +00:00
SimplifyCFGPass.cpp [multiversion] Thread a function argument through all the callers of the 2015-02-01 12:01:35 +00:00
Sink.cpp [PM] Split the LoopInfo object apart from the legacy pass, creating 2015-01-17 14:16:18 +00:00
StraightLineStrengthReduce.cpp Fixing a -Wsign-compare warning; NFC 2015-02-04 14:01:08 +00:00
StructurizeCFG.cpp StructurizeCFG: Remove obsolete fix for loop backedge detection 2015-02-04 20:49:47 +00:00
TailRecursionElimination.cpp [multiversion] Thread a function argument through all the callers of the 2015-02-01 12:01:35 +00:00