llvm-6502/include/llvm/Analysis
Chris Lattner 992efb0378 Step #2 to improve trip count analysis for loops like this:
void f(int* begin, int* end) { std::fill(begin, end, 0); }

which turns into a != exit expression where one pointer is
strided and (thanks to step #1) known to not overflow, and 
the other is loop invariant.

The observation here is that, though the IV is strided by
4 in this case, that the IV *has* to become equal to the
end value.  It cannot "miss" the end value by stepping over
it, because if it did, the strided IV expression would
eventually wrap around.

Handle this by turning A != B into "A-B != 0" where the A-B
part is known to be NUW.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123131 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-09 22:26:35 +00:00
..
AliasAnalysis.h fit in 80 cols 2011-01-08 20:53:41 +00:00
AliasSetTracker.h
CallGraph.h Add spliceFunction to the CallGraph interface. This allows users to efficiently 2011-01-03 03:19:35 +00:00
CaptureTracking.h
CFGPrinter.h
CodeMetrics.h make this file properly self contained. 2011-01-08 08:19:49 +00:00
ConstantFolding.h Clarify that constant folding of instructions applies when all operands 2010-11-23 10:16:18 +00:00
ConstantsScanner.h
DebugInfo.h Add support to create class type. 2010-12-08 20:18:20 +00:00
DIBuilder.h Add support to create debug info for functions and methods. 2010-12-08 20:42:44 +00:00
DominanceFrontier.h split dom frontier handling stuff out to its own DominanceFrontier header, 2011-01-02 22:09:33 +00:00
DominatorInternals.h Fix a typo in a variable name. 2011-01-02 12:17:10 +00:00
Dominators.h DominatorTree->print() now prints the status of the DFSNumbers correctly 2011-01-09 16:00:09 +00:00
DomPrinter.h
DOTGraphTraitsPass.h
FindUsedTypes.h
InlineCost.h
InstructionSimplify.h Clarify that InstructionSimplify only returns values that dominate the 2010-12-28 18:01:19 +00:00
Interval.h
IntervalIterator.h
IntervalPartition.h
IVUsers.h
LazyValueInfo.h
LibCallAliasAnalysis.h
LibCallSemantics.h
Lint.h
LiveValues.h
Loads.h
LoopDependenceAnalysis.h
LoopInfo.h split dom frontier handling stuff out to its own DominanceFrontier header, 2011-01-02 22:09:33 +00:00
LoopPass.h
MemoryBuiltins.h clean up handling of 'free', detangling it from everything else. 2010-11-30 01:28:33 +00:00
MemoryDependenceAnalysis.h Rewrite the main DSE loop to be written in terms of reasoning 2010-11-30 07:23:21 +00:00
Passes.h
PHITransAddr.h
PostDominators.h split dom frontier handling stuff out to its own DominanceFrontier header, 2011-01-02 22:09:33 +00:00
ProfileInfo.h
ProfileInfoLoader.h
ProfileInfoTypes.h
RegionInfo.h
RegionIterator.h
RegionPass.h
RegionPrinter.h
ScalarEvolution.h Step #2 to improve trip count analysis for loops like this: 2011-01-09 22:26:35 +00:00
ScalarEvolutionExpander.h Introduce memoization for ScalarEvolution dominates and properlyDominates 2010-11-18 00:34:22 +00:00
ScalarEvolutionExpressions.h Make SCEV::getType() and SCEV::print non-virtual. Move SCEV::hasOperand 2010-11-17 22:27:42 +00:00
ScalarEvolutionNormalization.h
SparsePropagation.h
Trace.h
ValueTracking.h move isBytewiseValue out to ValueTracking.h/cpp 2010-12-26 20:15:01 +00:00
Verifier.h