llvm-6502/lib/Analysis
2009-11-12 01:29:10 +00:00
..
IPA Fix DenseMap iterator constness. 2009-11-10 01:02:17 +00:00
AliasAnalysis.cpp
AliasAnalysisCounter.cpp
AliasAnalysisEvaluator.cpp
AliasDebugger.cpp
AliasSetTracker.cpp remove unneeded checks of isFreeCall 2009-11-03 05:35:19 +00:00
Analysis.cpp
BasicAliasAnalysis.cpp Default-addressspace null pointers don't alias anything. This allows 2009-11-09 19:29:11 +00:00
CaptureTracking.cpp remove a check of isFreeCall: the argument to free is already nocapture so the generic call code works fine. 2009-11-03 05:34:51 +00:00
CFGPrinter.cpp
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
DebugInfo.cpp Do not use StringRef in DebugInfo interface. 2009-11-12 00:50:58 +00:00
DomPrinter.cpp
InlineCost.cpp Add a missing closing parenthesis, and tweak to fit in 80 2009-11-01 19:12:43 +00:00
InstCount.cpp
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 Fix IVUsers to avoid assuming that the loop has a unique backedge. 2009-11-05 19:41:37 +00:00
LazyValueInfo.cpp expose edge information and switch j-t to use it. 2009-11-12 01:29:10 +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 Update computeArraySize() to use ComputeMultiple() to determine the array size associated with a malloc; also extend PerformHeapAllocSRoA() to check if the optimized malloc's arg had its highest bit set, so that it is safe for ComputeMultiple() to look through sext instructions while determining the optimized malloc's array size 2009-11-10 08:32:25 +00:00
MemoryDependenceAnalysis.cpp
PointerTracking.cpp remove a bunch of extraneous LLVMContext arguments 2009-11-06 04:27:31 +00:00
PostDominators.cpp
ProfileEstimatorPass.cpp
ProfileInfo.cpp
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
SparsePropagation.cpp
Trace.cpp
ValueTracking.cpp Add ComputeMultiple() analysis function that recursively determines if a Value V is a multiple of unsigned Base 2009-11-10 08:28:35 +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.

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