llvm-6502/lib/Analysis
Dan Gohman 6ce9d8b0ed Move all the logic for function attributes and call attributes out of the
AliasAnalysis base class and into BasicAliasAnalyais. This avoids confusion
about where such logic is happening when there are other AliasAnalysis
implementations present.

Move the logic for translating two-callsite getModRefInfo queries into
other AliasAnalysis queries out of BasicAliasAnalysis and into the
AliasAnalysis base class, as it is useful for other AliasAnalysis
implementations.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110421 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-06 01:25:49 +00:00
..
IPA Revert r110396 to fix buildbots. 2010-08-06 00:23:35 +00:00
AliasAnalysis.cpp Move all the logic for function attributes and call attributes out of the 2010-08-06 01:25:49 +00:00
AliasAnalysisCounter.cpp Revert r110396 to fix buildbots. 2010-08-06 00:23:35 +00:00
AliasAnalysisEvaluator.cpp Revert r110396 to fix buildbots. 2010-08-06 00:23:35 +00:00
AliasDebugger.cpp Revert r110396 to fix buildbots. 2010-08-06 00:23:35 +00:00
AliasSetTracker.cpp Revert r110396 to fix buildbots. 2010-08-06 00:23:35 +00:00
Analysis.cpp "In order to ease automatic bindings generation, it would be helpful if boolean values were distinguishable from integers. The attached patch introduces "typedef int LLVMBool;", and uses LLVMBool instead of int throughout the C API, wherever a boolean value is called for." 2010-01-09 22:27:07 +00:00
BasicAliasAnalysis.cpp Move all the logic for function attributes and call attributes out of the 2010-08-06 01:25:49 +00:00
CaptureTracking.cpp simplify 2010-07-28 10:57:28 +00:00
CFGPrinter.cpp Revert r110396 to fix buildbots. 2010-08-06 00:23:35 +00:00
CMakeLists.txt Fix CMake build 2010-08-03 02:38:20 +00:00
ConstantFolding.cpp eliminate CallInst::ArgOffset 2010-07-16 09:38:02 +00:00
DbgInfoPrinter.cpp Revert r110396 to fix buildbots. 2010-08-06 00:23:35 +00:00
DebugInfo.cpp Add explicit constructors. Patch by Renato Golin. 2010-08-02 22:51:46 +00:00
DomPrinter.cpp Revert r110396 to fix buildbots. 2010-08-06 00:23:35 +00:00
InlineCost.cpp use ImmutableCallSite for const-corrgoodness 2010-07-27 14:15:29 +00:00
InstCount.cpp Revert r110396 to fix buildbots. 2010-08-06 00:23:35 +00:00
InstructionSimplify.cpp Fix PR7647, handling the case when 'To' ends up being 2010-07-15 06:36:08 +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 Revert r110396 to fix buildbots. 2010-08-06 00:23:35 +00:00
IVUsers.cpp Revert r110396 to fix buildbots. 2010-08-06 00:23:35 +00:00
LazyValueInfo.cpp Add the beginnings of infrastructure for range tracking. 2010-08-05 22:59:19 +00:00
LibCallAliasAnalysis.cpp Thread const correctness through a bunch of AliasAnalysis interfaces and 2010-08-03 21:48:53 +00:00
LibCallSemantics.cpp Thread const correctness through a bunch of AliasAnalysis interfaces and 2010-08-03 21:48:53 +00:00
Lint.cpp Revert r110396 to fix buildbots. 2010-08-06 00:23:35 +00:00
LiveValues.cpp Revert r110396 to fix buildbots. 2010-08-06 00:23:35 +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 Eliminate getCanonicalInductionVariableIncrement's last user and 2010-07-23 21:34:51 +00:00
LoopPass.cpp Revert r110396 to fix buildbots. 2010-08-06 00:23:35 +00:00
Makefile make -fno-rtti the default unless a directory builds with REQUIRES_RTTI. 2010-01-24 20:43:08 +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 Revert r110396 to fix buildbots. 2010-08-06 00:23:35 +00:00
ModuleDebugInfoPrinter.cpp Revert r110396 to fix buildbots. 2010-08-06 00:23:35 +00:00
PHITransAddr.cpp Reapply r97010, the speculative revert failed. 2010-02-24 08:48:04 +00:00
PointerTracking.cpp Revert r110396 to fix buildbots. 2010-08-06 00:23:35 +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 Revert r110396 to fix buildbots. 2010-08-06 00:23:35 +00:00
ProfileInfo.cpp Revert r110396 to fix buildbots. 2010-08-06 00:23:35 +00:00
ProfileInfoLoader.cpp Reapplied r81355 with the problems fixed. 2009-09-16 11:35:50 +00:00
ProfileInfoLoaderPass.cpp Revert r110396 to fix buildbots. 2010-08-06 00:23:35 +00:00
ProfileVerifierPass.cpp Revert r110396 to fix buildbots. 2010-08-06 00:23:35 +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 Revert r110396 to fix buildbots. 2010-08-06 00:23:35 +00:00
RegionPrinter.cpp Revert r110396 to fix buildbots. 2010-08-06 00:23:35 +00:00
ScalarEvolution.cpp Revert r110396 to fix buildbots. 2010-08-06 00:23:35 +00:00
ScalarEvolutionAliasAnalysis.cpp Revert r110396 to fix buildbots. 2010-08-06 00:23:35 +00:00
ScalarEvolutionExpander.cpp Fix SCEVExpander::visitAddRecExpr so that it remembers the induction variable 2010-07-26 18:28:14 +00:00
ScalarEvolutionNormalization.cpp Fix SCEV denormalization of expressions where the exit value from 2010-07-20 17:06:20 +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 Revert r110396 to fix buildbots. 2010-08-06 00:23:35 +00:00
ValueTracking.cpp use ArgOperand accessors 2010-06-23 23:38:07 +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))

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