diff options
author | Owen Anderson <resistor@mac.com> | 2010-07-20 08:26:15 +0000 |
---|---|---|
committer | Owen Anderson <resistor@mac.com> | 2010-07-20 08:26:15 +0000 |
commit | 8be3291f5942e3ae4a5d66c480e7aabe2f771031 (patch) | |
tree | c8c82d984f9dc21c27426099f79bd412a2ff95c9 /include/llvm/PassSupport.h | |
parent | 29e9daa75019e6ee7b3305f7ef11a2cd85b96b55 (diff) | |
download | external_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.h | 90 |
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 *) {} }; |