llvm-6502/lib/Analysis
Owen Anderson 2ab36d3502 Begin adding static dependence information to passes, which will allow us to
perform initialization without static constructors AND without explicit initialization
by the client.  For the moment, passes are required to initialize both their
(potential) dependencies and any passes they preserve.  I hope to be able to relax
the latter requirement in the future.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116334 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-12 19:48:12 +00:00
..
IPA Begin adding static dependence information to passes, which will allow us to 2010-10-12 19:48:12 +00:00
AliasAnalysis.cpp Now with fewer extraneous semicolons! 2010-10-07 22:25:06 +00:00
AliasAnalysisCounter.cpp Now with fewer extraneous semicolons! 2010-10-07 22:25:06 +00:00
AliasAnalysisEvaluator.cpp Begin adding static dependence information to passes, which will allow us to 2010-10-12 19:48:12 +00:00
AliasDebugger.cpp Now with fewer extraneous semicolons! 2010-10-07 22:25:06 +00:00
AliasSetTracker.cpp Begin adding static dependence information to passes, which will allow us to 2010-10-12 19:48:12 +00:00
Analysis.cpp Add initialization routines for Analysis and IPA. 2010-10-07 18:31:00 +00:00
BasicAliasAnalysis.cpp Now with fewer extraneous semicolons! 2010-10-07 22:25:06 +00:00
CaptureTracking.cpp
CFGPrinter.cpp Now with fewer extraneous semicolons! 2010-10-07 22:25:06 +00:00
CMakeLists.txt Remove PointerTracking from cmakelists … 2010-09-29 19:39:50 +00:00
ConstantFolding.cpp Don't try to constant fold libm functions with non-finite arguments. 2010-09-27 21:29:20 +00:00
DbgInfoPrinter.cpp Now with fewer extraneous semicolons! 2010-10-07 22:25:06 +00:00
DebugInfo.cpp Add support for DW_TAG_unspecified_parameters. 2010-10-06 20:50:40 +00:00
DomPrinter.cpp Now with fewer extraneous semicolons! 2010-10-07 22:25:06 +00:00
InlineCost.cpp Now using a variant of the existing inlining heuristics to decide whether to create a given specialization of a function in PartialSpecialization. If the total performance bonus across all callsites passing the same constant exceeds the specialization cost, we create the specialization. 2010-10-09 22:06:36 +00:00
InstCount.cpp Now with fewer extraneous semicolons! 2010-10-07 22:25:06 +00:00
InstructionSimplify.cpp
Interval.cpp
IntervalPartition.cpp Now with fewer extraneous semicolons! 2010-10-07 22:25:06 +00:00
IVUsers.cpp Begin adding static dependence information to passes, which will allow us to 2010-10-12 19:48:12 +00:00
LazyValueInfo.cpp Now with fewer extraneous semicolons! 2010-10-07 22:25:06 +00:00
LibCallAliasAnalysis.cpp Now with fewer extraneous semicolons! 2010-10-07 22:25:06 +00:00
LibCallSemantics.cpp
Lint.cpp Begin adding static dependence information to passes, which will allow us to 2010-10-12 19:48:12 +00:00
LiveValues.cpp Begin adding static dependence information to passes, which will allow us to 2010-10-12 19:48:12 +00:00
Loads.cpp
LoopDependenceAnalysis.cpp Begin adding static dependence information to passes, which will allow us to 2010-10-12 19:48:12 +00:00
LoopInfo.cpp Begin adding static dependence information to passes, which will allow us to 2010-10-12 19:48:12 +00:00
LoopPass.cpp
Makefile
MemDepPrinter.cpp Begin adding static dependence information to passes, which will allow us to 2010-10-12 19:48:12 +00:00
MemoryBuiltins.cpp
MemoryDependenceAnalysis.cpp Begin adding static dependence information to passes, which will allow us to 2010-10-12 19:48:12 +00:00
ModuleDebugInfoPrinter.cpp Now with fewer extraneous semicolons! 2010-10-07 22:25:06 +00:00
PHITransAddr.cpp
PostDominators.cpp Begin adding static dependence information to passes, which will allow us to 2010-10-12 19:48:12 +00:00
ProfileEstimatorPass.cpp Begin adding static dependence information to passes, which will allow us to 2010-10-12 19:48:12 +00:00
ProfileInfo.cpp Now with fewer extraneous semicolons! 2010-10-07 22:25:06 +00:00
ProfileInfoLoader.cpp
ProfileInfoLoaderPass.cpp Now with fewer extraneous semicolons! 2010-10-07 22:25:06 +00:00
ProfileVerifierPass.cpp Begin adding static dependence information to passes, which will allow us to 2010-10-12 19:48:12 +00:00
README.txt When checking whether the special handling for an addrec increment which 2010-04-26 21:46:36 +00:00
RegionInfo.cpp Begin adding static dependence information to passes, which will allow us to 2010-10-12 19:48:12 +00:00
RegionPrinter.cpp Now with fewer extraneous semicolons! 2010-10-07 22:25:06 +00:00
ScalarEvolution.cpp Begin adding static dependence information to passes, which will allow us to 2010-10-12 19:48:12 +00:00
ScalarEvolutionAliasAnalysis.cpp Begin adding static dependence information to passes, which will allow us to 2010-10-12 19:48:12 +00:00
ScalarEvolutionExpander.cpp Fix SCEVExpander::visitAddRecExpr so that it remembers the induction variable 2010-07-26 18:28:14 +00:00
ScalarEvolutionNormalization.cpp
SparsePropagation.cpp
Trace.cpp
TypeBasedAliasAnalysis.cpp Support AA chaining. 2010-10-11 23:39:34 +00:00
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.

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

In formatValue in test/CodeGen/X86/lsr-delayed-fold.ll,

ScalarEvolution is forming this expression:

((trunc i64 (-1 * %arg5) to i32) + (trunc i64 %arg5 to i32) + (-1 * (trunc i64 undef to i32)))

This could be folded to

(-1 * (trunc i64 undef to i32))

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