aboutsummaryrefslogtreecommitdiffstats
path: root/include/llvm/Analysis
diff options
context:
space:
mode:
authorOwen Anderson <resistor@mac.com>2007-08-08 21:53:20 +0000
committerOwen Anderson <resistor@mac.com>2007-08-08 21:53:20 +0000
commit179463c0d4c20bfb2c6b1e697eed6f16305a201e (patch)
tree068a2a3efd1c4a168b234bd9aea46d3087ef25b9 /include/llvm/Analysis
parent787a713bb2121c141c560a643d88ecfa2060e612 (diff)
downloadexternal_llvm-179463c0d4c20bfb2c6b1e697eed6f16305a201e.zip
external_llvm-179463c0d4c20bfb2c6b1e697eed6f16305a201e.tar.gz
external_llvm-179463c0d4c20bfb2c6b1e697eed6f16305a201e.tar.bz2
Cleanup and comment-ize the memdep header.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40948 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/Analysis')
-rw-r--r--include/llvm/Analysis/MemoryDependenceAnalysis.h29
1 files changed, 18 insertions, 11 deletions
diff --git a/include/llvm/Analysis/MemoryDependenceAnalysis.h b/include/llvm/Analysis/MemoryDependenceAnalysis.h
index 2abb6e6..409c10b 100644
--- a/include/llvm/Analysis/MemoryDependenceAnalysis.h
+++ b/include/llvm/Analysis/MemoryDependenceAnalysis.h
@@ -31,23 +31,24 @@ class Instruction;
class MemoryDependenceAnalysis : public FunctionPass {
private:
-
+ // A map from instructions to their dependency, with a boolean
+ // flags for whether this mapping is confirmed or not
typedef DenseMap<Instruction*, std::pair<const Instruction*, bool> >
- depMapType;
-
+ depMapType;
depMapType depGraphLocal;
- typedef DenseMap<const Instruction*,
- SmallPtrSet<Instruction*, 4> > reverseDepMapType;
+ // A reverse mapping form dependencies to the dependees. This is
+ // used when removing instructions to keep the cache coherent.
+ typedef DenseMap<const Instruction*, SmallPtrSet<Instruction*, 4> >
+ reverseDepMapType;
reverseDepMapType reverseDep;
-
- const Instruction* getCallSiteDependency(CallSite C, Instruction* start,
- BasicBlock* block);
- void nonLocalHelper(Instruction* query, BasicBlock* block,
- DenseMap<BasicBlock*, Value*>& resp);
- public:
+ public:
+ // Special marker indicating that the query has no dependency
+ // in the specified block.
static const Instruction* NonLocal;
+
+ // Special marker indicating that the query has no dependency at all
static const Instruction* None;
static char ID; // Class identification, replacement for typeinfo
@@ -79,6 +80,12 @@ class MemoryDependenceAnalysis : public FunctionPass {
/// removeInstruction - Remove an instruction from the dependence analysis,
/// updating the dependence of instructions that previously depended on it.
void removeInstruction(Instruction* rem);
+
+ private:
+ const Instruction* getCallSiteDependency(CallSite C, Instruction* start,
+ BasicBlock* block);
+ void nonLocalHelper(Instruction* query, BasicBlock* block,
+ DenseMap<BasicBlock*, Value*>& resp);
};
} // End llvm namespace