aboutsummaryrefslogtreecommitdiffstats
path: root/include/llvm/PassSupport.h
diff options
context:
space:
mode:
authorOwen Anderson <resistor@mac.com>2010-07-20 08:26:15 +0000
committerOwen Anderson <resistor@mac.com>2010-07-20 08:26:15 +0000
commit8be3291f5942e3ae4a5d66c480e7aabe2f771031 (patch)
treec8c82d984f9dc21c27426099f79bd412a2ff95c9 /include/llvm/PassSupport.h
parent29e9daa75019e6ee7b3305f7ef11a2cd85b96b55 (diff)
downloadexternal_llvm-8be3291f5942e3ae4a5d66c480e7aabe2f771031.zip
external_llvm-8be3291f5942e3ae4a5d66c480e7aabe2f771031.tar.gz
external_llvm-8be3291f5942e3ae4a5d66c480e7aabe2f771031.tar.bz2
Speculatively revert r108813, in an attempt to get the self-host buildbots working again. I don't see why this patch
would cause them to fail the way they are, but none of the other intervening patches seem likely either. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@108818 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/PassSupport.h')
-rw-r--r--include/llvm/PassSupport.h90
1 files changed, 40 insertions, 50 deletions
diff --git a/include/llvm/PassSupport.h b/include/llvm/PassSupport.h
index c396b87..09abe93 100644
--- a/include/llvm/PassSupport.h
+++ b/include/llvm/PassSupport.h
@@ -22,7 +22,6 @@
#define LLVM_PASS_SUPPORT_H
#include "Pass.h"
-#include "llvm/Config/config.h"
namespace llvm {
@@ -34,24 +33,45 @@ class TargetMachine;
/// getPassInfo() method. These objects are set up by the RegisterPass<>
/// template, defined below.
///
-
-struct StaticPassInfo {
+class PassInfo {
+public:
typedef Pass* (*NormalCtor_t)();
struct InterfaceInfo {
- const StaticPassInfo *interface;
+ const PassInfo *interface;
const InterfaceInfo *next;
};
- const char *PassName; // Nice name for Pass
- const char *PassArgument; // Command Line argument to run this pass
- intptr_t PassID;
- bool IsCFGOnlyPass; // Pass only looks at the CFG.
- bool IsAnalysis; // True if an analysis pass.
- bool IsAnalysisGroup; // True if an analysis group.
- InterfaceInfo *ItfImpl;// Interfaces implemented by this pass
+private:
+ const char *const PassName; // Nice name for Pass
+ const char *const PassArgument; // Command Line argument to run this pass
+ const intptr_t PassID;
+ const bool IsCFGOnlyPass; // Pass only looks at the CFG.
+ const bool IsAnalysis; // True if an analysis pass.
+ const bool IsAnalysisGroup; // True if an analysis group.
+ const InterfaceInfo *ItfImpl;// Interfaces implemented by this pass
NormalCtor_t NormalCtor;
-
+
+public:
+ /// PassInfo ctor - Do not call this directly, this should only be invoked
+ /// through RegisterPass.
+ PassInfo(const char *name, const char *arg, intptr_t pi,
+ NormalCtor_t normal = 0,
+ bool isCFGOnly = false, bool is_analysis = false)
+ : PassName(name), PassArgument(arg), PassID(pi),
+ IsCFGOnlyPass(isCFGOnly),
+ IsAnalysis(is_analysis), IsAnalysisGroup(false), NormalCtor(normal) {
+ registerPass();
+ }
+ /// PassInfo ctor - Do not call this directly, this should only be invoked
+ /// through RegisterPass. This version is for use by analysis groups; it
+ /// does not auto-register the pass.
+ PassInfo(const char *name, intptr_t pi)
+ : PassName(name), PassArgument(""), PassID(pi),
+ IsCFGOnlyPass(false),
+ IsAnalysis(false), IsAnalysisGroup(true), NormalCtor(0) {
+ }
+
/// getPassName - Return the friendly name for the pass, never returns null
///
const char *getPassName() const { return PassName; }
@@ -70,7 +90,7 @@ struct StaticPassInfo {
bool isPassID(void *IDPtr) const {
return PassID == (intptr_t)IDPtr;
}
-
+
/// isAnalysisGroup - Return true if this is an analysis group, not a normal
/// pass.
///
@@ -80,7 +100,7 @@ struct StaticPassInfo {
/// isCFGOnlyPass - return true if this pass only looks at the CFG for the
/// function.
bool isCFGOnlyPass() const { return IsCFGOnlyPass; }
-
+
/// getNormalCtor - Return a pointer to a function, that when called, creates
/// an instance of the pass and returns it. This pointer may be null if there
/// is no default constructor for the pass.
@@ -92,11 +112,14 @@ struct StaticPassInfo {
NormalCtor = Ctor;
}
+ /// createPass() - Use this method to create an instance of this pass.
+ Pass *createPass() const;
+
/// addInterfaceImplemented - This method is called when this pass is
/// registered as a member of an analysis group with the RegisterAnalysisGroup
/// template.
///
- void addInterfaceImplemented(const StaticPassInfo *ItfPI) {
+ void addInterfaceImplemented(const PassInfo *ItfPI) {
InterfaceInfo *NewInfo = new InterfaceInfo();
NewInfo->interface = ItfPI;
NewInfo->next = ItfImpl;
@@ -110,39 +133,6 @@ struct StaticPassInfo {
return ItfImpl;
}
- /// createPass() - Use this method to create an instance of this pass.
- Pass *createPass() const;
-};
-
-class PassInfo : public StaticPassInfo {
-public:
- /// PassInfo ctor - Do not call this directly, this should only be invoked
- /// through RegisterPass.
- PassInfo(const char *name, const char *arg, intptr_t pi,
- NormalCtor_t normal = 0,
- bool isCFGOnly = false, bool is_analysis = false) {
- this->PassName = name;
- this->PassArgument = arg;
- this->PassID = pi;
- this->IsCFGOnlyPass = isCFGOnly;
- this->IsAnalysis = is_analysis;
- this->IsAnalysisGroup = false;
- this->NormalCtor = normal;
- registerPass();
- }
- /// PassInfo ctor - Do not call this directly, this should only be invoked
- /// through RegisterPass. This version is for use by analysis groups; it
- /// does not auto-register the pass.
- PassInfo(const char *name, intptr_t pi) {
- this->PassName = name;
- this->PassArgument = "";
- this->PassID = pi;
- this->IsCFGOnlyPass = false;
- this->IsAnalysis = false;
- this->IsAnalysisGroup = true;
- this->NormalCtor = 0;
- }
-
protected:
void registerPass();
void unregisterPass();
@@ -250,7 +240,7 @@ struct PassRegistrationListener {
/// Callback functions - These functions are invoked whenever a pass is loaded
/// or removed from the current executable.
///
- virtual void passRegistered(const StaticPassInfo *) {}
+ virtual void passRegistered(const PassInfo *) {}
/// enumeratePasses - Iterate over the registered passes, calling the
/// passEnumerate callback on each PassInfo object.
@@ -260,7 +250,7 @@ struct PassRegistrationListener {
/// passEnumerate - Callback function invoked when someone calls
/// enumeratePasses on this PassRegistrationListener object.
///
- virtual void passEnumerate(const StaticPassInfo *) {}
+ virtual void passEnumerate(const PassInfo *) {}
};