llvm-6502/include/llvm/Analysis
Chris Lattner cc10244d77 Fix PR8728, a miscompilation I recently introduced. When optimizing
memcpy's like:
  memcpy(A, B)
  memcpy(A, C)

we cannot delete the first memcpy as dead if A and C might be aliases.
If so, we actually get:

  memcpy(A, B)
  memcpy(A, A)

which is not correct to transform into:

  memcpy(A, A)

This patch was heavily influenced by Jakub Staszak's patch in PR8728, thanks
Jakub!



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120974 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-06 01:48:06 +00:00
..
AliasAnalysis.h Fix PR8728, a miscompilation I recently introduced. When optimizing 2010-12-06 01:48:06 +00:00
AliasSetTracker.h Reapply r116831 and r116839, converting AliasAnalysis to use 2010-10-19 22:54:46 +00:00
CallGraph.h Merge System into Support. 2010-11-29 18:16:10 +00:00
CaptureTracking.h
CFGPrinter.h
CodeMetrics.h
ConstantFolding.h Clarify that constant folding of instructions applies when all operands 2010-11-23 10:16:18 +00:00
ConstantsScanner.h
DebugInfo.h Take care of special characters while creating named MDNode name to hold function specific local variable's info. 2010-11-10 22:19:21 +00:00
DIBuilder.h Merge System into Support. 2010-11-29 18:16:10 +00:00
DominatorInternals.h Optimize a common case in the Lengauer-Tarjan dominators algorithm. This gives a 2010-11-23 06:32:37 +00:00
Dominators.h Get rid of static constructors for pass registration. Instead, every pass exposes an initializeMyPassFunction(), which 2010-10-19 17:21:58 +00:00
DomPrinter.h
DOTGraphTraitsPass.h
FindUsedTypes.h Get rid of static constructors for pass registration. Instead, every pass exposes an initializeMyPassFunction(), which 2010-10-19 17:21:58 +00:00
InlineCost.h
InstructionSimplify.h Expand a little on the description of what InstructionSimplify does. 2010-11-23 10:50:08 +00:00
Interval.h
IntervalIterator.h
IntervalPartition.h Get rid of static constructors for pass registration. Instead, every pass exposes an initializeMyPassFunction(), which 2010-10-19 17:21:58 +00:00
IVUsers.h
LazyValueInfo.h Get rid of static constructors for pass registration. Instead, every pass exposes an initializeMyPassFunction(), which 2010-10-19 17:21:58 +00:00
LibCallAliasAnalysis.h Get rid of static constructors for pass registration. Instead, every pass exposes an initializeMyPassFunction(), which 2010-10-19 17:21:58 +00:00
LibCallSemantics.h
Lint.h
LiveValues.h
Loads.h
LoopDependenceAnalysis.h Get rid of static constructors for pass registration. Instead, every pass exposes an initializeMyPassFunction(), which 2010-10-19 17:21:58 +00:00
LoopInfo.h Change the basic block map in LoopInfo from a std::map to a DenseMap. This is a 16% speedup running loops on test-suite + SPEC2000. 2010-11-30 18:51:19 +00:00
LoopPass.h
MemoryBuiltins.h clean up handling of 'free', detangling it from everything else. 2010-11-30 01:28:33 +00:00
MemoryDependenceAnalysis.h Rewrite the main DSE loop to be written in terms of reasoning 2010-11-30 07:23:21 +00:00
Passes.h Move NoAA out of BasicAliasAnalysis.cpp into its own file, now that 2010-10-19 23:09:08 +00:00
PHITransAddr.h
PostDominators.h Get rid of static constructors for pass registration. Instead, every pass exposes an initializeMyPassFunction(), which 2010-10-19 17:21:58 +00:00
ProfileInfo.h
ProfileInfoLoader.h
ProfileInfoTypes.h
RegionInfo.h
RegionIterator.h
RegionPass.h Add RegionPass support. 2010-10-20 01:54:44 +00:00
RegionPrinter.h
ScalarEvolution.h Merge System into Support. 2010-11-29 18:16:10 +00:00
ScalarEvolutionExpander.h Introduce memoization for ScalarEvolution dominates and properlyDominates 2010-11-18 00:34:22 +00:00
ScalarEvolutionExpressions.h Make SCEV::getType() and SCEV::print non-virtual. Move SCEV::hasOperand 2010-11-17 22:27:42 +00:00
ScalarEvolutionNormalization.h
SparsePropagation.h
Trace.h
ValueTracking.h teach DSE to use GetPointerBaseWithConstantOffset to analyze 2010-11-30 23:05:20 +00:00
Verifier.h