llvm-6502/include/llvm/Analysis
Rafael Espindola 702bcce747 The dominance computation already has logic for computing if an edge dominates
a use or a BB, but it is inline in the handling of the invoke instruction.

This patch refactors it so that it can be used in other cases. For example, in

define i32 @f(i32 %x) {
bb0:
  %cmp = icmp eq i32 %x, 0
  br i1 %cmp, label %bb2, label %bb1
bb1:
  br label %bb2
bb2:
  %cond = phi i32 [ %x, %bb0 ], [ 0, %bb1 ]
  %foo = add i32 %cond, %x
  ret i32 %foo
}

GVN should be able to replace %x with 0 in any use that is dominated by the
true edge out of bb0. In the above example the only such use is the one in
the phi.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@161429 91177308-0d34-0410-b5e6-96231b3b80d8
2012-08-07 17:30:46 +00:00
..
AliasAnalysis.h Move the capture analysis from MemoryDependencyAnalysis to a more general place 2012-05-14 20:35:04 +00:00
AliasSetTracker.h
BlockFrequencyImpl.h Fix typos found by http://github.com/lyda/misspell-check 2012-06-02 10:20:22 +00:00
BlockFrequencyInfo.h
BranchProbabilityInfo.h
CallGraph.h
CaptureTracking.h
CFGPrinter.h
CodeMetrics.h A pile of long over-due refactorings here. There are some very, *very* 2012-05-04 00:58:03 +00:00
ConstantFolding.h
ConstantsScanner.h
DominanceFrontier.h
DominatorInternals.h
Dominators.h The dominance computation already has logic for computing if an edge dominates 2012-08-07 17:30:46 +00:00
DomPrinter.h
DOTGraphTraitsPass.h
FindUsedTypes.h
InlineCost.h A pile of long over-due refactorings here. There are some very, *very* 2012-05-04 00:58:03 +00:00
InstructionSimplify.h
Interval.h
IntervalIterator.h
IntervalPartition.h
IVUsers.h
LazyValueInfo.h
LibCallAliasAnalysis.h
LibCallSemantics.h
Lint.h
Loads.h
LoopDependenceAnalysis.h
LoopInfo.h Enable the new LoopInfo algorithm by default. 2012-06-26 04:11:38 +00:00
LoopInfoImpl.h Enable the new LoopInfo algorithm by default. 2012-06-26 04:11:38 +00:00
LoopIterator.h Allow for customized graph edge pruning in PostOrderIterator.h 2012-07-17 15:35:40 +00:00
LoopPass.h
MemoryBuiltins.h revert r160742: it's breaking CMake build 2012-07-25 18:49:28 +00:00
MemoryDependenceAnalysis.h Move the capture analysis from MemoryDependencyAnalysis to a more general place 2012-05-14 20:35:04 +00:00
Passes.h
PathNumbering.h
PathProfileInfo.h
PHITransAddr.h
PostDominators.h
ProfileInfo.h
ProfileInfoLoader.h Remove unused private member variables uncovered by the recent changes to clang's -Wunused-private-field. 2012-07-20 22:05:57 +00:00
ProfileInfoTypes.h
RegionInfo.h include/llvm/Analysis/RegionInfo.h: Appease msvc. 2012-08-02 14:44:01 +00:00
RegionIterator.h
RegionPass.h
RegionPrinter.h
ScalarEvolution.h Teach SCEV's icmp simplification logic that a-b == 0 is equivalent to a == b. 2012-05-30 18:32:23 +00:00
ScalarEvolutionExpander.h LSR Fix: check SCEV expression safety before expansion. 2012-07-13 23:33:10 +00:00
ScalarEvolutionExpressions.h SCEVTraversal: Add a visited set. 2012-07-18 05:14:03 +00:00
ScalarEvolutionNormalization.h
SparsePropagation.h
Trace.h
ValueTracking.h Teach DeadStoreElimination to eliminate exit-block stores with phi addresses. 2012-05-10 18:57:38 +00:00
Verifier.h