llvm/lib/Analysis
2010-10-07 18:31:27 +00:00
..
IPA Add an implementation of the initialization routine for IPA. 2010-10-07 18:31:27 +00:00
AliasAnalysis.cpp Hide analysis group registration behind a macro, just like pass registration. 2010-10-06 21:02:27 +00:00
AliasAnalysisCounter.cpp Remove the experimental AliasAnalysis::getDependency interface, which 2010-09-14 21:25:10 +00:00
AliasAnalysisEvaluator.cpp Reapply r110396, with fixes to appease the Linux buildbot gods. 2010-08-06 18:33:48 +00:00
AliasDebugger.cpp Remove the experimental AliasAnalysis::getDependency interface, which 2010-09-14 21:25:10 +00:00
AliasSetTracker.cpp Don't print two "0x" prefixes. Use a raw_ostream overload instead of llvm::format. 2010-08-30 14:46:53 +00:00
Analysis.cpp Add initialization routines for Analysis and IPA. 2010-10-07 18:31:00 +00:00
BasicAliasAnalysis.cpp PR7959: Handle negative scales in GEPs correctly in BasicAA for non-64-bit 2010-09-15 20:08:03 +00:00
CaptureTracking.cpp simplify 2010-07-28 10:57:28 +00:00
CFGPrinter.cpp zap dead code. 2010-09-04 18:12:00 +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 Move the pass initialization helper functions into the llvm namespace, and add 2010-10-07 04:13:08 +00:00
DebugInfo.cpp Add support for DW_TAG_unspecified_parameters. 2010-10-06 20:50:40 +00:00
DomPrinter.cpp Reapply r110396, with fixes to appease the Linux buildbot gods. 2010-08-06 18:33:48 +00:00
InlineCost.cpp What the loop unroller cares about, rather than just not unrolling loops with calls, is 2010-09-09 20:32:23 +00:00
InstCount.cpp Revert r111082. No warnings for this common pattern. 2010-08-15 10:27:23 +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 Change Pass::print to take a raw ostream instead of std::ostream, 2009-08-23 06:03:38 +00:00
IntervalPartition.cpp Reapply r110396, with fixes to appease the Linux buildbot gods. 2010-08-06 18:33:48 +00:00
IVUsers.cpp stop forcing a noop AssemblyAnnotationWriter to silence #uses 2010-09-02 23:03:10 +00:00
LazyValueInfo.cpp It is possible, under specific circumstances involving ptrtoint ConstantExpr's, for LVI to end up trying to merge 2010-09-16 18:28:33 +00:00
LibCallAliasAnalysis.cpp Remove the experimental AliasAnalysis::getDependency interface, which 2010-09-14 21:25:10 +00:00
LibCallSemantics.cpp Thread const correctness through a bunch of AliasAnalysis interfaces and 2010-08-03 21:48:53 +00:00
Lint.cpp zap dead code. 2010-09-04 18:12:00 +00:00
LiveValues.cpp Reapply r110396, with fixes to appease the Linux buildbot gods. 2010-08-06 18:33:48 +00:00
Loads.cpp Move FindAvailableLoadedValue isSafeToLoadUnconditionally out of 2010-05-28 16:19:17 +00:00
LoopDependenceAnalysis.cpp Fix batch of converting RegisterPass<> to INTIALIZE_PASS(). 2010-07-21 22:09:45 +00:00
LoopInfo.cpp pull a simple method out of LICM into a new 2010-09-06 01:05:37 +00:00
LoopPass.cpp zap dead code. 2010-09-04 18:12:00 +00:00
Makefile make -fno-rtti the default unless a directory builds with REQUIRES_RTTI. 2010-01-24 20:43:08 +00:00
MemDepPrinter.cpp Add an #include of raw_ostream.h. Previously, this only compiled 2010-09-17 00:33:43 +00:00
MemoryBuiltins.cpp minor enhancement to llvm::isFreeCall API: return CallInst; no functional change 2010-06-23 21:51:12 +00:00
MemoryDependenceAnalysis.cpp Teach memdep about TBAA tags. 2010-09-22 21:41:02 +00:00
ModuleDebugInfoPrinter.cpp Reapply r110396, with fixes to appease the Linux buildbot gods. 2010-08-06 18:33:48 +00:00
PHITransAddr.cpp Reapply r97010, the speculative revert failed. 2010-02-24 08:48:04 +00:00
PostDominators.cpp Add INSTANTIATE_AG_PASS, which combines RegisterPass<> with RegisterAnalysisGroup<> for pass registration. 2010-07-21 23:07:00 +00:00
ProfileEstimatorPass.cpp Now that PassInfo and Pass::ID have been separated, move the rest of the passes over to the new registration API. 2010-08-23 17:52:01 +00:00
ProfileInfo.cpp Fix a warning when building with clang++. 2010-10-07 17:04:18 +00:00
ProfileInfoLoader.cpp Reapplied r81355 with the problems fixed. 2009-09-16 11:35:50 +00:00
ProfileInfoLoaderPass.cpp Now that PassInfo and Pass::ID have been separated, move the rest of the passes over to the new registration API. 2010-08-23 17:52:01 +00:00
ProfileVerifierPass.cpp Reapply r110396, with fixes to appease the Linux buildbot gods. 2010-08-06 18:33:48 +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 RegionInfo: Do not assert if a BB is not part of the dominance tree. 2010-08-10 09:54:35 +00:00
RegionPrinter.cpp Move the pass initialization helper functions into the llvm namespace, and add 2010-10-07 04:13:08 +00:00
ScalarEvolution.cpp Don't add the operand count to SCEV uniquing data; FoldingSetNodeID 2010-10-04 17:24:08 +00:00
ScalarEvolutionAliasAnalysis.cpp Remove the experimental AliasAnalysis::getDependency interface, which 2010-09-14 21:25:10 +00:00
ScalarEvolutionExpander.cpp Fix SCEVExpander::visitAddRecExpr so that it remembers the induction variable 2010-07-26 18:28:14 +00:00
ScalarEvolutionNormalization.cpp Disable the asserts that check that normalization is perfectly 2010-09-03 22:12:56 +00:00
SparsePropagation.cpp Convert debug messages to use dbgs(). Generally this means 2009-12-23 22:28:01 +00:00
Trace.cpp Convert debug messages to use dbgs(). Generally this means 2009-12-23 22:35:10 +00:00
TypeBasedAliasAnalysis.cpp Convert TBAA to use the new TBAATag field of AliasAnalysis::Location. 2010-09-14 23:28:12 +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))

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