llvm-6502/include/llvm/Analysis
Arnold Schwaighofer 2ced33808e SCEVExpander: Try hard not to create derived induction variables in other loops
During LSR of one loop we can run into a situation where we have to expand the
start of a recurrence of a loop induction variable in this loop. This start
value is a value derived of the induction variable of a preceeding loop. SCEV
has cannonicalized this value to a different recurrence than the recurrence of
the preceeding loop's induction variable (the type and/or step direction) has
changed). When we come to instantiate this SCEV we created a second induction
variable in this preceeding loop.  This patch tries to base such derived
induction variables of the preceeding loop's induction variable.

This helps twolf on arm and seems to help scimark2 on x86.

Reapply with a fix for the case of a value derived from a pointer.

radar://15970709

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@201496 91177308-0d34-0410-b5e6-96231b3b80d8
2014-02-16 15:49:50 +00:00
..
AliasAnalysis.h
AliasSetTracker.h
BlockFrequencyImpl.h Clean up whitespace 2014-01-31 21:45:51 +00:00
BlockFrequencyInfo.h BlockFrequencyInfo: Readded getEntryFreq. 2013-12-20 22:11:11 +00:00
BranchProbabilityInfo.h Re-sort all of the includes with ./utils/sort_includes.py so that 2014-01-07 11:48:04 +00:00
CallGraph.h [PM] [cleanup] Rearrange the public and private sections of this class 2013-12-02 12:35:56 +00:00
CallGraphSCCPass.h
CallPrinter.h
CaptureTracking.h
CFG.h Add some constantness. 2013-08-20 23:04:15 +00:00
CFGPrinter.h Put the functionality for printing a value to a raw_ostream as an 2014-01-09 02:29:41 +00:00
CodeMetrics.h
ConstantFolding.h
ConstantsScanner.h
DependenceAnalysis.h delinearization of arrays 2013-11-12 22:47:20 +00:00
DominanceFrontier.h [PM] Split DominatorTree into a concrete analysis result object which 2014-01-13 13:07:17 +00:00
DomPrinter.h
DOTGraphTraitsPass.h [PM] Add a really simple trait to the DOTGraphTraitsPass class templates 2013-11-26 03:43:52 +00:00
FindUsedTypes.h
InlineCost.h
InstructionSimplify.h
Interval.h
IntervalIterator.h
IntervalPartition.h Correct word hyphenations 2013-12-05 05:44:44 +00:00
IVUsers.h
LazyCallGraph.h [PM] Fix horrible typos that somehow didn't cause a failure in a C++11 2014-02-06 05:17:02 +00:00
LazyValueInfo.h
LibCallAliasAnalysis.h
LibCallSemantics.h
Lint.h
Loads.h
LoopInfo.h Re-sort all of the includes with ./utils/sort_includes.py so that 2014-01-07 11:48:04 +00:00
LoopInfoImpl.h [cleanup] Move the Dominators.h and Verifier.h headers into the IR 2014-01-13 09:26:24 +00:00
LoopIterator.h
LoopPass.h Disable most IR-level transform passes on functions marked 'optnone'. 2014-02-06 00:07:05 +00:00
MemoryBuiltins.h Teach MemoryBuiltins about address spaces 2013-12-14 00:27:48 +00:00
MemoryDependenceAnalysis.h
Passes.h delinearization of arrays 2013-11-12 22:47:20 +00:00
PHITransAddr.h
PostDominators.h [cleanup] Move the Dominators.h and Verifier.h headers into the IR 2014-01-13 09:26:24 +00:00
PtrUseVisitor.h
RegionInfo.h Correct word hyphenations 2013-12-05 05:44:44 +00:00
RegionIterator.h
RegionPass.h Fix c++ mode comments 2014-01-06 19:52:42 +00:00
RegionPrinter.h
ScalarEvolution.h ScalarEvolution: Analyze trip count of loops with a switch guarding the exit. 2014-02-11 15:44:32 +00:00
ScalarEvolutionExpander.h SCEVExpander: Try hard not to create derived induction variables in other loops 2014-02-16 15:49:50 +00:00
ScalarEvolutionExpressions.h SCEVRewriter: Optionally interpret constants in value map as SCEVConstant 2014-01-10 18:20:29 +00:00
ScalarEvolutionNormalization.h
SparsePropagation.h
TargetTransformInfo.h [Vectorizer] Add a new 'OperandValueKind' in TargetTransformInfo called 2014-02-12 23:43:47 +00:00
Trace.h
ValueTracking.h Teach MemoryBuiltins and InstructionSimplify that operator new never returns NULL. 2013-09-24 16:37:51 +00:00