llvm/lib/Analysis
2010-10-08 13:57:31 +00:00
..
IPA Now with fewer extraneous semicolons! 2010-10-07 22:25:06 +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 Now with fewer extraneous semicolons! 2010-10-07 22:25:06 +00:00
AliasDebugger.cpp Now with fewer extraneous semicolons! 2010-10-07 22:25:06 +00:00
AliasSetTracker.cpp Now with fewer extraneous semicolons! 2010-10-07 22:25:06 +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 Start separating out code metrics into code size metrics and code performance metrics. Partial Specialization will apply the former to function specializations, and the latter to all callsites that can use a specialization, in order to decide whether to create a specialization 2010-10-08 13:57:31 +00:00
InstCount.cpp Now with fewer extraneous semicolons! 2010-10-07 22:25:06 +00:00
InstructionSimplify.cpp Revert r114097, adding back in the assertion against replacing an Instruction by itself. Now that CorrelatedValuePropagation is 2010-09-16 20:51:41 +00:00
Interval.cpp
IntervalPartition.cpp Now with fewer extraneous semicolons! 2010-10-07 22:25:06 +00:00
IVUsers.cpp Now with fewer extraneous semicolons! 2010-10-07 22:25:06 +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 Now with fewer extraneous semicolons! 2010-10-07 22:25:06 +00:00
LiveValues.cpp Now with fewer extraneous semicolons! 2010-10-07 22:25:06 +00:00
Loads.cpp
LoopDependenceAnalysis.cpp Now with fewer extraneous semicolons! 2010-10-07 22:25:06 +00:00
LoopInfo.cpp Now with fewer extraneous semicolons! 2010-10-07 22:25:06 +00:00
LoopPass.cpp zap dead code. 2010-09-04 18:12:00 +00:00
Makefile
MemDepPrinter.cpp Now with fewer extraneous semicolons! 2010-10-07 22:25:06 +00:00
MemoryBuiltins.cpp
MemoryDependenceAnalysis.cpp Now with fewer extraneous semicolons! 2010-10-07 22:25:06 +00:00
ModuleDebugInfoPrinter.cpp Now with fewer extraneous semicolons! 2010-10-07 22:25:06 +00:00
PHITransAddr.cpp
PostDominators.cpp Now with fewer extraneous semicolons! 2010-10-07 22:25:06 +00:00
ProfileEstimatorPass.cpp Now with fewer extraneous semicolons! 2010-10-07 22:25:06 +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 Now with fewer extraneous semicolons! 2010-10-07 22:25:06 +00:00
README.txt
RegionInfo.cpp Now with fewer extraneous semicolons! 2010-10-07 22:25:06 +00:00
RegionPrinter.cpp Now with fewer extraneous semicolons! 2010-10-07 22:25:06 +00:00
ScalarEvolution.cpp Now with fewer extraneous semicolons! 2010-10-07 22:25:06 +00:00
ScalarEvolutionAliasAnalysis.cpp Now with fewer extraneous semicolons! 2010-10-07 22:25:06 +00:00
ScalarEvolutionExpander.cpp
ScalarEvolutionNormalization.cpp Disable the asserts that check that normalization is perfectly 2010-09-03 22:12:56 +00:00
SparsePropagation.cpp
Trace.cpp
TypeBasedAliasAnalysis.cpp Now with fewer extraneous semicolons! 2010-10-07 22:25:06 +00:00
ValueTracking.cpp fix PR8063, a crash in globalopt in the malloc analysis code. 2010-09-05 17:20:46 +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.

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

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))

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