aboutsummaryrefslogtreecommitdiffstats
path: root/include/llvm/Pass.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/llvm/Pass.h')
-rw-r--r--include/llvm/Pass.h32
1 files changed, 16 insertions, 16 deletions
diff --git a/include/llvm/Pass.h b/include/llvm/Pass.h
index 58bdfc010a..07355da2d1 100644
--- a/include/llvm/Pass.h
+++ b/include/llvm/Pass.h
@@ -73,7 +73,7 @@ enum PassManagerType {
class Pass {
AnalysisResolver *Resolver; // Used to resolve analysis
intptr_t PassID;
-
+ bool isAnalysisPass; // True if this pass is an analysis pass.
// AnalysisImpls - This keeps track of which passes implement the interfaces
// that are required by the current pass (to implement getAnalysis()).
//
@@ -82,10 +82,14 @@ class Pass {
void operator=(const Pass&); // DO NOT IMPLEMENT
Pass(const Pass &); // DO NOT IMPLEMENT
public:
- explicit Pass(intptr_t pid) : Resolver(0), PassID(pid) {}
- explicit Pass(const void *pid) : Resolver(0), PassID((intptr_t)pid) {}
+ explicit Pass(intptr_t pid, bool AP = false) : Resolver(0), PassID(pid),
+ isAnalysisPass(AP) {}
+ explicit Pass(const void *pid, bool AP = false) : Resolver(0),
+ PassID((intptr_t)pid),
+ isAnalysisPass(AP) {}
virtual ~Pass();
+ bool isAnalysis() const { return isAnalysisPass; }
/// getPassName - Return a nice clean name for a pass. This usually
/// implemented in terms of the name that is registered by one of the
/// Registration templates, but can be overloaded directly.
@@ -130,11 +134,6 @@ public:
return Resolver;
}
- /// isAnalysis - Return true if this pass is implementing an analysis pass.
- virtual bool isAnalysis() const {
- return false;
- }
-
/// getAnalysisUsage - This function should be overriden by passes that need
/// analysis information to do their job. If a pass specifies that it uses a
/// particular analysis result to this function, it can then use the
@@ -232,8 +231,8 @@ public:
return PMT_ModulePassManager;
}
- explicit ModulePass(intptr_t pid) : Pass(pid) {}
- explicit ModulePass(const void *pid) : Pass(pid) {}
+ explicit ModulePass(intptr_t pid, bool AP = false) : Pass(pid, AP) {}
+ explicit ModulePass(const void *pid, bool AP = false) : Pass(pid, AP) {}
// Force out-of-line virtual method.
virtual ~ModulePass();
};
@@ -258,8 +257,9 @@ public:
///
bool runOnModule(Module &M) { return false; }
- explicit ImmutablePass(intptr_t pid) : ModulePass(pid) {}
- explicit ImmutablePass(const void *pid) : ModulePass(pid) {}
+ explicit ImmutablePass(intptr_t pid, bool AP = false) : ModulePass(pid, AP) {}
+ explicit ImmutablePass(const void *pid, bool AP = false)
+ : ModulePass(pid, AP) {}
// Force out-of-line virtual method.
virtual ~ImmutablePass();
@@ -276,8 +276,8 @@ public:
///
class FunctionPass : public Pass {
public:
- explicit FunctionPass(intptr_t pid) : Pass(pid) {}
- explicit FunctionPass(const void *pid) : Pass(pid) {}
+ explicit FunctionPass(intptr_t pid, bool AP = false) : Pass(pid, AP) {}
+ explicit FunctionPass(const void *pid, bool AP = false) : Pass(pid, AP) {}
/// doInitialization - Virtual method overridden by subclasses to do
/// any necessary per-module initialization.
@@ -328,8 +328,8 @@ public:
///
class BasicBlockPass : public Pass {
public:
- explicit BasicBlockPass(intptr_t pid) : Pass(pid) {}
- explicit BasicBlockPass(const void *pid) : Pass(pid) {}
+ explicit BasicBlockPass(intptr_t pid, bool AP = false) : Pass(pid, AP) {}
+ explicit BasicBlockPass(const void *pid, bool AP = false) : Pass(pid, AP) {}
/// doInitialization - Virtual method overridden by subclasses to do
/// any necessary per-module initialization.