llvm-6502/lib/Analysis
2009-10-16 00:33:09 +00:00
..
IPA
AliasAnalysis.cpp
AliasAnalysisCounter.cpp
AliasAnalysisEvaluator.cpp
AliasDebugger.cpp
AliasSetTracker.cpp
Analysis.cpp
BasicAliasAnalysis.cpp When checking aliases between phi sources and V2, we know the sources are not themselves phi nodes. However, V2 may be. Call aliasCheck with V2 first to potentially eliminate a std::swap call. 2009-10-16 00:33:09 +00:00
CaptureTracking.cpp
CFGPrinter.cpp
CMakeLists.txt Update the other CMake file. 2009-10-13 18:50:54 +00:00
ConstantFolding.cpp Extend ConstantFolding to understand signed overflow variants 2009-10-05 22:53:52 +00:00
DbgInfoPrinter.cpp
DebugInfo.cpp "there is not any instruction with attached debug info in this module" does not mean "there is no debug info in this module". :) 2009-10-13 17:35:35 +00:00
InlineCost.cpp Compute a full cost value even when a setjmp call is found. 2009-10-13 20:10:10 +00:00
InstCount.cpp
Interval.cpp
IntervalPartition.cpp
IVUsers.cpp
LibCallAliasAnalysis.cpp
LibCallSemantics.cpp
LiveValues.cpp
LoopDependenceAnalysis.cpp
LoopInfo.cpp
LoopPass.cpp
Makefile
MallocHelper.cpp Fix bug where array malloc with unexpected computation of the size argument resulted in MallocHelper 2009-10-15 20:14:52 +00:00
MemoryDependenceAnalysis.cpp Memory dependence analysis was incorrectly stopping to scan for stores to a pointer at bitcast uses of a malloc call. 2009-10-13 01:42:53 +00:00
PointerTracking.cpp Fix bug where array malloc with unexpected computation of the size argument resulted in MallocHelper 2009-10-15 20:14:52 +00:00
PostDominators.cpp
ProfileEstimatorPass.cpp
ProfileInfo.cpp
ProfileInfoLoader.cpp
ProfileInfoLoaderPass.cpp
ProfileVerifierPass.cpp
README.txt
ScalarEvolution.cpp Revert r83606 and add comments explaining why it isn't safe. 2009-10-09 16:35:06 +00:00
ScalarEvolutionAliasAnalysis.cpp
ScalarEvolutionExpander.cpp Introduce and use convenience methods for getting pointer types 2009-10-06 15:40:36 +00:00
SparsePropagation.cpp
Trace.cpp
ValueTracking.cpp

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.

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