llvm-6502/include/llvm/Analysis
Dan Gohman 81db61a2e6 Factor the code for collecting IV users out of LSR into an IVUsers class,
and generalize it so that it can be used by IndVarSimplify. Implement the
base IndVarSimplify transformation code using IVUsers. This removes
TestOrigIVForWrap and associated code, as ScalarEvolution now has enough
builtin overflow detection and folding logic to handle all the same cases,
and more. Run "opt -iv-users -analyze -disable-output" on your favorite
loop for an example of what IVUsers does.

This lets IndVarSimplify eliminate IV casts and compute trip counts in
more cases. Also, this happens to finally fix the remaining testcases
in PR1301.

Now that IndVarSimplify is being more aggressive, it occasionally runs
into the problem where ScalarEvolutionExpander's code for avoiding
duplicate expansions makes it difficult to ensure that all expanded
instructions dominate all the instructions that will use them. As a
temporary measure, IndVarSimplify now uses a FixUsesBeforeDefs function
to fix up instructions inserted by SCEVExpander. Fortunately, this code
is contained, and can be easily removed once a more comprehensive
solution is available.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@71535 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-12 02:17:14 +00:00
..
AliasAnalysis.h Correct a comment: since AccessArguments is now 2009-02-13 17:36:13 +00:00
AliasSetTracker.h reimplement AliasSetTracker in terms of DenseMap instead of hash_map, 2009-03-09 05:11:09 +00:00
CallGraph.h introduce typedef for complicated vector, and use it too 2009-01-17 00:09:08 +00:00
CaptureTracking.h BasicAliasAnalysis and FunctionAttrs were both 2009-01-18 12:19:30 +00:00
CFGPrinter.h Don't attribute in file headers anymore. See llvmdev for the 2007-12-29 19:59:42 +00:00
ConstantFolding.h "ret (constexpr)" can't be folded into a Constant. Add a method to 2008-05-25 20:56:15 +00:00
ConstantsScanner.h Tidy up #includes, deleting a bunch of unnecessary #includes. 2009-01-05 17:59:02 +00:00
DebugInfo.h Revert 71165. It did more than just revert 71158 and it introduced 2009-05-07 19:46:24 +00:00
DominatorInternals.h Tidy up #includes, deleting a bunch of unnecessary #includes. 2009-01-05 17:59:02 +00:00
Dominators.h Tidy up #includes, deleting a bunch of unnecessary #includes. 2009-01-05 17:59:02 +00:00
FindUsedTypes.h Tidy up #includes, deleting a bunch of unnecessary #includes. 2009-01-05 17:59:02 +00:00
Interval.h Don't attribute in file headers anymore. See llvmdev for the 2007-12-29 19:59:42 +00:00
IntervalIterator.h Don't attribute in file headers anymore. See llvmdev for the 2007-12-29 19:59:42 +00:00
IntervalPartition.h Tidy up several unbeseeming casts from pointer to intptr_t. 2008-09-04 17:05:41 +00:00
IVUsers.h Factor the code for collecting IV users out of LSR into an IVUsers class, 2009-05-12 02:17:14 +00:00
LibCallAliasAnalysis.h Expose a public interface to this pass. 2008-06-05 23:45:18 +00:00
LibCallSemantics.h Revert 51775. 2008-05-30 22:47:19 +00:00
LiveValues.h Add a liveness analysis pass for LLVM IR values. This computes 2009-03-19 17:29:04 +00:00
LoopInfo.h Add a getExitBlock utility function to LoopInfo which returns the 2009-05-08 20:07:23 +00:00
LoopPass.h Move dumpPassStructure out of line. 2009-02-17 19:41:26 +00:00
LoopVR.h Eliminate several more unnecessary intptr_t casts. 2009-02-18 05:09:16 +00:00
MemoryDependenceAnalysis.h now that you can put a PointerIntPair in a SmallPtrSet, remove some 2009-03-29 00:24:04 +00:00
Passes.h Add a liveness analysis pass for LLVM IR values. This computes 2009-03-19 17:29:04 +00:00
PostDominators.h Tidy up several unbeseeming casts from pointer to intptr_t. 2008-09-04 17:05:41 +00:00
ProfileInfo.h Don't attribute in file headers anymore. See llvmdev for the 2007-12-29 19:59:42 +00:00
ProfileInfoLoader.h Don't attribute in file headers anymore. See llvmdev for the 2007-12-29 19:59:42 +00:00
ProfileInfoTypes.h Don't attribute in file headers anymore. See llvmdev for the 2007-12-29 19:59:42 +00:00
ScalarEvolution.h Fix another bug in r71252. This code supports GetElementPtr 2009-05-08 20:58:38 +00:00
ScalarEvolutionExpander.h Actually insert inserted instructions into the InsertedValues map. 2009-05-01 17:13:31 +00:00
ScalarEvolutionExpressions.h Factor out a common base class between SCEVCommutativeExpr and 2009-05-07 14:00:19 +00:00
SparsePropagation.h add an accessor method, patch by John McCall! 2009-04-09 05:56:58 +00:00
Trace.h Don't attribute in file headers anymore. See llvmdev for the 2007-12-29 19:59:42 +00:00
ValueTracking.h Oops...I committed too much. 2009-03-13 04:39:26 +00:00
Verifier.h Don't attribute in file headers anymore. See llvmdev for the 2007-12-29 19:59:42 +00:00