llvm-6502/lib/Analysis
Dan Gohman 76c638a14c Refine the capture tracking rules for comparisons to be more
careful about crazy methods of capturing pointers using comparisons.
Comparisons of identified objects with null in the default address
space are not captures. And, comparisons of two pointers within the
same identified object are not captures.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@89421 91177308-0d34-0410-b5e6-96231b3b80d8
2009-11-20 00:50:47 +00:00
..
IPA Fix DenseMap iterator constness. 2009-11-10 01:02:17 +00:00
AliasAnalysis.cpp Remove AllocationInst. Since MallocInst went away, AllocaInst is the only subclass of AllocationInst, so it no longer is necessary. 2009-10-23 21:09:37 +00:00
AliasAnalysisCounter.cpp Remove includes of Support/Compiler.h that are no longer needed after the 2009-10-25 06:57:41 +00:00
AliasAnalysisEvaluator.cpp Remove includes of Support/Compiler.h that are no longer needed after the 2009-10-25 06:57:41 +00:00
AliasDebugger.cpp Remove includes of Support/Compiler.h that are no longer needed after the 2009-10-25 06:57:41 +00:00
AliasSetTracker.cpp remove unneeded checks of isFreeCall 2009-11-03 05:35:19 +00:00
Analysis.cpp
BasicAliasAnalysis.cpp Extend CaptureTracking to indicate when a value is never stored, even 2009-11-19 21:57:48 +00:00
CaptureTracking.cpp Refine the capture tracking rules for comparisons to be more 2009-11-20 00:50:47 +00:00
CFGPrinter.cpp Remove includes of Support/Compiler.h that are no longer needed after the 2009-10-25 06:57:41 +00:00
CMakeLists.txt Stub out a new lazy value info pass, which will eventually 2009-11-11 00:22:30 +00:00
ConstantFolding.cpp fix ConstantFoldCompareInstOperands to take the LHS/RHS as 2009-11-09 23:06:58 +00:00
DbgInfoPrinter.cpp Remove VISIBILITY_HIDDEN from class/struct found inside anonymous namespaces. 2009-10-25 06:33:48 +00:00
DebugInfo.cpp Remove dead code. 2009-11-17 22:39:08 +00:00
DomPrinter.cpp fix the other issue with ID's, hopefully really fixing the linux build. 2009-10-18 04:58:34 +00:00
InlineCost.cpp Add a missing closing parenthesis, and tweak to fit in 80 2009-11-01 19:12:43 +00:00
InstCount.cpp Remove FreeInst. 2009-10-26 23:43:48 +00:00
InstructionSimplify.cpp move some generally useful functions out of jump threading 2009-11-10 22:26:15 +00:00
Interval.cpp
IntervalPartition.cpp
IVUsers.cpp Teach IVUsers to keep things simpler and track loop-invariant strides only 2009-11-19 02:05:44 +00:00
LazyValueInfo.cpp typo spotted by duncan. 2009-11-16 03:51:42 +00:00
LibCallAliasAnalysis.cpp
LibCallSemantics.cpp
LiveValues.cpp remove redundant foward declaration. This function is already in 2009-11-11 00:21:21 +00:00
LoopDependenceAnalysis.cpp
LoopInfo.cpp Minor tidiness fixes. 2009-11-09 18:19:43 +00:00
LoopPass.cpp
Makefile
MemoryBuiltins.cpp Simplify ComputeMultiple so that it doesn't depend on TargetData. 2009-11-18 00:58:27 +00:00
MemoryDependenceAnalysis.cpp Treat lifetime begin/end markers as allocations/frees respectively for the 2009-10-28 07:05:35 +00:00
PointerTracking.cpp remove a bunch of extraneous LLVMContext arguments 2009-11-06 04:27:31 +00:00
PostDominators.cpp
ProfileEstimatorPass.cpp Remove VISIBILITY_HIDDEN from class/struct found inside anonymous namespaces. 2009-10-25 06:33:48 +00:00
ProfileInfo.cpp Remove includes of Support/Compiler.h that are no longer needed after the 2009-10-25 06:57:41 +00:00
ProfileInfoLoader.cpp
ProfileInfoLoaderPass.cpp Apply fix for PR5135, Credit to Andreas Neustifter. 2009-11-02 02:55:39 +00:00
ProfileVerifierPass.cpp Apply fix for PR5135, Credit to Andreas Neustifter. 2009-11-02 02:55:39 +00:00
README.txt
ScalarEvolution.cpp Pass the (optional) TargetData object to ConstantFoldInstOperands 2009-11-09 23:34:17 +00:00
ScalarEvolutionAliasAnalysis.cpp Make ScalarEvolutionAliasAnalysis slightly more aggressive, by making an 2009-10-31 14:32:25 +00:00
ScalarEvolutionExpander.cpp Introduce and use convenience methods for getting pointer types 2009-10-06 15:40:36 +00:00
SparsePropagation.cpp rename indbr -> indirectbr to appease the residents of #llvm. 2009-10-28 00:19:10 +00:00
Trace.cpp
ValueTracking.cpp Simplify ComputeMultiple so that it doesn't depend on TargetData. 2009-11-18 00:58:27 +00:00

Analysis Opportunities:

//===---------------------------------------------------------------------===//

In test/Transforms/LoopStrengthReduce/quadradic-exit-value.ll, the
ScalarEvolution expression for %r is this:

  {1,+,3,+,2}<loop>

Outside the loop, this could be evaluated simply as (%n * %n), however
ScalarEvolution currently evaluates it as

  (-2 + (2 * (trunc i65 (((zext i64 (-2 + %n) to i65) * (zext i64 (-1 + %n) to i65)) /u 2) to i64)) + (3 * %n))

In addition to being much more complicated, it involves i65 arithmetic,
which is very inefficient when expanded into code.

//===---------------------------------------------------------------------===//