llvm-6502/include/llvm/Analysis
Stepan Dyatkovskiy c10fa6c801 Taken into account Duncan's comments for r149481 dated by 2nd Feb 2012:
http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20120130/136146.html

Implemented CaseIterator and it solves almost all described issues: we don't need to mix operand/case/successor indexing anymore. Base iterator class is implemented as a template since it may be initialized either from "const SwitchInst*" or from "SwitchInst*".

ConstCaseIt is just a read-only iterator.
CaseIt is read-write iterator; it allows to change case successor and case value.

Usage of iterator allows totally remove resolveXXXX methods. All indexing convertions done automatically inside the iterator's getters.

Main way of iterator usage looks like this:
SwitchInst *SI = ... // intialize it somehow

for (SwitchInst::CaseIt i = SI->caseBegin(), e = SI->caseEnd(); i != e; ++i) {
  BasicBlock *BB = i.getCaseSuccessor();
  ConstantInt *V = i.getCaseValue();
  // Do something.
}

If you want to convert case number to TerminatorInst successor index, just use getSuccessorIndex iterator's method.
If you want initialize iterator from TerminatorInst successor index, use CaseIt::fromSuccessorIndex(...) method.

There are also related changes in llvm-clients: klee and clang.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152297 91177308-0d34-0410-b5e6-96231b3b80d8
2012-03-08 07:06:20 +00:00
..
AliasAnalysis.h Move isKnownNonNull from private implementation detail of BasicAA to a public 2012-02-25 10:56:28 +00:00
AliasSetTracker.h Make aliasesPointer and aliasesUnknownInst public members of AliasSet. 2012-02-10 15:52:37 +00:00
BlockFrequencyImpl.h Add some constantness to BranchProbabilityInfo and BlockFrequnencyInfo. 2011-12-20 20:03:10 +00:00
BlockFrequencyInfo.h Add some constantness to BranchProbabilityInfo and BlockFrequnencyInfo. 2011-12-20 20:03:10 +00:00
BranchProbabilityInfo.h Remove return heuristics from the static branch probabilities, and 2011-10-24 12:01:08 +00:00
CallGraph.h Teach the CallGraph to ignore calls to intrinsics. 2011-06-09 19:46:27 +00:00
CaptureTracking.h Move includes to the .cpp file. 2012-01-17 22:16:31 +00:00
CFGPrinter.h Taken into account Duncan's comments for r149481 dated by 2nd Feb 2012: 2012-03-08 07:06:20 +00:00
CodeMetrics.h Rotate two of the functions used to count bonuses for the inline cost 2012-03-08 02:04:19 +00:00
ConstantFolding.h Split the interesting bits of ConstantFoldLoadThroughGEPConstantExpr 2012-01-24 05:43:50 +00:00
ConstantsScanner.h
DebugInfo.h Remove tabs. 2012-02-08 00:17:07 +00:00
DIBuilder.h Add support for runtime languages on our forward declarations. 2012-02-20 18:04:14 +00:00
DominanceFrontier.h Unweaken vtables as per http://llvm.org/docs/CodingStandards.html#ll_virtual_anch 2011-12-20 02:50:00 +00:00
DominatorInternals.h Change the Dominators recalculate() function to only rely on GraphTraits 2011-12-05 19:17:04 +00:00
Dominators.h Change the implementation of dominates(inst, inst) to one based on what the 2012-02-26 02:19:19 +00:00
DomPrinter.h
DOTGraphTraitsPass.h Remove all remaining uses of Value::getNameStr(). 2011-11-15 16:27:03 +00:00
FindUsedTypes.h land David Blaikie's patch to de-constify Type, with a few tweaks. 2011-07-18 04:54:35 +00:00
InlineCost.h Rotate two of the functions used to count bonuses for the inline cost 2012-03-08 02:04:19 +00:00
InstructionSimplify.h Propagate TargetLibraryInfo throughout ConstantFolding.cpp and 2011-12-01 03:08:23 +00:00
Interval.h
IntervalIterator.h Convert assert(0) to llvm_unreachable 2012-02-05 22:14:15 +00:00
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 Put all IVUsers in the processed set. Allow querying IVUsers with isIVUserOrOperand. 2012-01-06 21:41:55 +00:00
LazyValueInfo.h Fix a few more places where TargetData/TargetLibraryInfo is not being passed. 2011-12-02 01:26:24 +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 Remove the experimental AliasAnalysis::getDependency interface, which 2010-09-14 21:25:10 +00:00
Lint.h Remove unused STL header includes. 2011-04-23 19:53:52 +00:00
Loads.h Move FindAvailableLoadedValue isSafeToLoadUnconditionally out of 2010-05-28 16:19:17 +00:00
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 Simplify more DenseMap.find users. 2012-01-04 21:41:24 +00:00
LoopIterator.h Cleanup. Remove an extraneous GraphTraits specialization. 2011-08-10 22:55:39 +00:00
LoopPass.h Reapply r138695. Fix PassManager stack depths. 2011-08-29 17:07:00 +00:00
MemoryBuiltins.h land David Blaikie's patch to de-constify Type, with a few tweaks. 2011-07-18 04:54:35 +00:00
MemoryDependenceAnalysis.h Refactor capture tracking (which already had a couple flags for whether returns 2011-11-14 22:49:42 +00:00
Passes.h The ARC language-specific optimizer. Credit to Dan Gohman. 2011-06-15 23:37:01 +00:00
PathNumbering.h Implementation of path profiling. 2011-01-29 01:09:53 +00:00
PathProfileInfo.h Remove unused STL header includes. 2011-04-23 19:53:52 +00:00
PHITransAddr.h Propagate TargetLibraryInfo throughout ConstantFolding.cpp and 2011-12-01 03:08:23 +00:00
PostDominators.h remove postdom frontiers, because it is dead. Forward dom frontiers are 2011-04-05 21:57:17 +00:00
ProfileInfo.h Convert assert(0) to llvm_unreachable 2012-02-05 22:14:15 +00:00
ProfileInfoLoader.h
ProfileInfoTypes.h This is #included by .c files. Remove C++-style comments. 2011-01-29 21:54:26 +00:00
RegionInfo.h Missed some users of Value::getNameStr. 2011-11-15 18:30:06 +00:00
RegionIterator.h Fix a ton of comment typos found by codespell. Patch by 2011-04-15 05:18:47 +00:00
RegionPass.h Reapply r138695. Fix PassManager stack depths. 2011-08-29 17:07:00 +00:00
RegionPrinter.h Add new RegionInfo pass. 2010-07-22 07:46:31 +00:00
ScalarEvolution.h Clarified the SCEV getSmallConstantTripCount interface with in-your-face comments. 2012-01-11 06:52:55 +00:00
ScalarEvolutionExpander.h SCEVExpander fixes. Affects LSR and indvars. 2012-01-20 07:41:13 +00:00
ScalarEvolutionExpressions.h Remove dead code. Improve llvm_unreachable text. Simplify some control flow. 2012-02-19 11:37:01 +00:00
ScalarEvolutionNormalization.h Generalize IVUsers to track arbitrary expressions rather than expressions 2010-04-07 22:27:08 +00:00
SparsePropagation.h
Trace.h
ValueTracking.h reapply the patches reverted in r149470 that reenable ConstantDataArray, 2012-02-05 02:29:43 +00:00
Verifier.h Fix a comment. 2010-04-08 17:41:04 +00:00