aboutsummaryrefslogtreecommitdiff
path: root/include/llvm/Pass.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/llvm/Pass.h')
-rw-r--r--include/llvm/Pass.h41
1 files changed, 26 insertions, 15 deletions
diff --git a/include/llvm/Pass.h b/include/llvm/Pass.h
index 35ec022516a5..c2b9f95956e8 100644
--- a/include/llvm/Pass.h
+++ b/include/llvm/Pass.h
@@ -87,7 +87,8 @@ class Pass {
Pass(const Pass &) LLVM_DELETED_FUNCTION;
public:
- explicit Pass(PassKind K, char &pid) : Resolver(0), PassID(&pid), Kind(K) { }
+ explicit Pass(PassKind K, char &pid)
+ : Resolver(nullptr), PassID(&pid), Kind(K) { }
virtual ~Pass();
@@ -235,17 +236,17 @@ public:
class ModulePass : public Pass {
public:
/// createPrinterPass - Get a module printer pass.
- Pass *createPrinterPass(raw_ostream &O, const std::string &Banner) const;
+ Pass *createPrinterPass(raw_ostream &O,
+ const std::string &Banner) const override;
/// runOnModule - Virtual method overriden by subclasses to process the module
/// being operated on.
virtual bool runOnModule(Module &M) = 0;
- virtual void assignPassManager(PMStack &PMS,
- PassManagerType T);
+ void assignPassManager(PMStack &PMS, PassManagerType T) override;
/// Return what kind of Pass Manager can manage this pass.
- virtual PassManagerType getPotentialPassManagerType() const;
+ PassManagerType getPotentialPassManagerType() const override;
explicit ModulePass(char &pid) : Pass(PT_Module, pid) {}
// Force out-of-line virtual method.
@@ -268,11 +269,11 @@ public:
///
virtual void initializePass();
- virtual ImmutablePass *getAsImmutablePass() { return this; }
+ ImmutablePass *getAsImmutablePass() override { return this; }
/// ImmutablePasses are never run.
///
- bool runOnModule(Module &) { return false; }
+ bool runOnModule(Module &) override { return false; }
explicit ImmutablePass(char &pid)
: ModulePass(pid) {}
@@ -295,18 +296,23 @@ public:
explicit FunctionPass(char &pid) : Pass(PT_Function, pid) {}
/// createPrinterPass - Get a function printer pass.
- Pass *createPrinterPass(raw_ostream &O, const std::string &Banner) const;
+ Pass *createPrinterPass(raw_ostream &O,
+ const std::string &Banner) const override;
/// runOnFunction - Virtual method overriden by subclasses to do the
/// per-function processing of the pass.
///
virtual bool runOnFunction(Function &F) = 0;
- virtual void assignPassManager(PMStack &PMS,
- PassManagerType T);
+ void assignPassManager(PMStack &PMS, PassManagerType T) override;
/// Return what kind of Pass Manager can manage this pass.
- virtual PassManagerType getPotentialPassManagerType() const;
+ PassManagerType getPotentialPassManagerType() const override;
+
+protected:
+ /// skipOptnoneFunction - This function has Attribute::OptimizeNone
+ /// and most transformation passes should skip it.
+ bool skipOptnoneFunction(const Function &F) const;
};
@@ -326,7 +332,8 @@ public:
explicit BasicBlockPass(char &pid) : Pass(PT_BasicBlock, pid) {}
/// createPrinterPass - Get a basic block printer pass.
- Pass *createPrinterPass(raw_ostream &O, const std::string &Banner) const;
+ Pass *createPrinterPass(raw_ostream &O,
+ const std::string &Banner) const override;
using llvm::Pass::doInitialization;
using llvm::Pass::doFinalization;
@@ -346,11 +353,15 @@ public:
///
virtual bool doFinalization(Function &);
- virtual void assignPassManager(PMStack &PMS,
- PassManagerType T);
+ void assignPassManager(PMStack &PMS, PassManagerType T) override;
/// Return what kind of Pass Manager can manage this pass.
- virtual PassManagerType getPotentialPassManagerType() const;
+ PassManagerType getPotentialPassManagerType() const override;
+
+protected:
+ /// skipOptnoneFunction - Containing function has Attribute::OptimizeNone
+ /// and most transformation passes should skip it.
+ bool skipOptnoneFunction(const BasicBlock &BB) const;
};
/// If the user specifies the -time-passes argument on an LLVM tool command line