llvm/lib/Analysis
Dan Gohman 01ecca20bf Teach getZeroExtendExpr and getSignExtendExpr to use trip-count
information to simplify [sz]ext({a,+,b}) to {zext(a),+,[zs]ext(b)},
as appropriate.

These functions and the trip count code each call into the other, so
this requires careful handling to avoid infinite recursion. During
the initial trip count computation, conservative SCEVs are used,
which are subsequently discarded once the trip count is actually
known.

Among other benefits, this change lets LSR automatically eliminate
some unnecessary zext-inreg and sext-inreg operation where the
operand is an induction variable.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@70241 91177308-0d34-0410-b5e6-96231b3b80d8
2009-04-27 20:16:15 +00:00
..
IPA Clear the cached cost when removing a function in 2009-03-19 18:03:56 +00:00
AliasAnalysis.cpp Generalize some alias analysis logic from atomic 2009-02-14 10:56:35 +00:00
AliasAnalysisCounter.cpp Tidy up several unbeseeming casts from pointer to intptr_t. 2008-09-04 17:05:41 +00:00
AliasAnalysisEvaluator.cpp simplify logic and get rid of the assumption that operand 0 is the callee 2009-03-24 19:28:39 +00:00
AliasDebugger.cpp Refactor my previous change to maintain the distinction between AliasAnalysis and BasicAliasAnalysis. This involves some wider changes because it 2009-02-05 23:36:27 +00:00
AliasSetTracker.cpp getEntryFor() may invalidate DenseMap iterator. 2009-03-30 18:34:47 +00:00
Analysis.cpp Expose Function::viewCFG and Function::viewCFGOnly to bindings. 2008-03-31 16:22:09 +00:00
BasicAliasAnalysis.cpp Generalize some alias analysis logic from atomic 2009-02-14 10:56:35 +00:00
CaptureTracking.cpp BasicAliasAnalysis and FunctionAttrs were both 2009-01-18 12:19:30 +00:00
CFGPrinter.cpp Rationalize the names of passes that print information: 2008-09-23 12:47:39 +00:00
CMakeLists.txt Fix the Win32 VS2008 build: 2009-03-19 23:26:52 +00:00
ConstantFolding.cpp use higher level APIs. 2009-04-03 00:02:39 +00:00
DbgInfoPrinter.cpp Oops...I committed too much. 2009-03-13 04:39:26 +00:00
DebugInfo.cpp Add a method to check that the subprogram holds debug info for the given Function or not. 2009-04-15 00:06:07 +00:00
InstCount.cpp Tidy up several unbeseeming casts from pointer to intptr_t. 2008-09-04 17:05:41 +00:00
Interval.cpp Remove attribution from file headers, per discussion on llvmdev. 2007-12-29 20:36:04 +00:00
IntervalPartition.cpp Tidy up several unbeseeming casts from pointer to intptr_t. 2008-09-04 17:05:41 +00:00
LibCallAliasAnalysis.cpp Expose a public interface to this pass. 2008-06-05 23:45:18 +00:00
LibCallSemantics.cpp Add a new interface for describing the behavior of library calls. This 2008-05-07 18:21:13 +00:00
LiveValues.cpp Enhance LiveValues to work on PHI operands. 2009-03-23 15:49:37 +00:00
LoopInfo.cpp Remove dead comments. 2008-12-18 09:01:18 +00:00
LoopPass.cpp Before deleting a basic block, give other loop passes a chance cleanup analysis values, related to the instructions in the basic block. 2009-03-25 23:57:48 +00:00
LoopVR.cpp More const qualifiers. 2009-04-18 17:57:20 +00:00
Makefile Removed trailing whitespace from Makefiles. 2009-01-09 16:44:42 +00:00
MemoryDependenceAnalysis.cpp now that you can put a PointerIntPair in a SmallPtrSet, remove some 2009-03-29 00:24:04 +00:00
PostDominators.cpp Add newline at end of file. 2008-05-29 21:05:16 +00:00
ProfileInfo.cpp Tidy up several unbeseeming casts from pointer to intptr_t. 2008-09-04 17:05:41 +00:00
ProfileInfoLoader.cpp Tidy up #includes, deleting a bunch of unnecessary #includes. 2009-01-05 17:59:02 +00:00
ProfileInfoLoaderPass.cpp Tidy up several unbeseeming casts from pointer to intptr_t. 2008-09-04 17:05:41 +00:00
ScalarEvolution.cpp Teach getZeroExtendExpr and getSignExtendExpr to use trip-count 2009-04-27 20:16:15 +00:00
ScalarEvolutionExpander.cpp Change SCEVExpander's expandCodeFor to provide more flexibility 2009-04-23 15:16:49 +00:00
SparsePropagation.cpp Make Print callable from a pass's print method: add const qualifier. No 2009-03-11 20:50:17 +00:00
Trace.cpp Remove attribution from file headers, per discussion on llvmdev. 2007-12-29 20:36:04 +00:00
ValueTracking.cpp Oops...I committed too much. 2009-03-13 04:39:26 +00:00