Mercurial > hg > Members > tobaru > cbc > CbC_llvm
diff include/llvm/Analysis/LoopPass.h @ 120:1172e4bd9c6f
update 4.0.0
author | mir3636 |
---|---|
date | Fri, 25 Nov 2016 19:14:25 +0900 |
parents | 7d135dc70f03 |
children | 803732b1fca8 |
line wrap: on
line diff
--- a/include/llvm/Analysis/LoopPass.h Tue Jan 26 22:56:36 2016 +0900 +++ b/include/llvm/Analysis/LoopPass.h Fri Nov 25 19:14:25 2016 +0900 @@ -88,9 +88,10 @@ virtual void deleteAnalysisLoop(Loop *L) {} protected: - /// skipOptnoneFunction - Containing function has Attribute::OptimizeNone - /// and most transformation passes should skip it. - bool skipOptnoneFunction(const Loop *L) const; + /// Optional passes call this function to check whether the pass should be + /// skipped. This is the case when Attribute::OptimizeNone is set or when + /// optimization bisect is over the limit. + bool skipLoop(const Loop *L) const; }; class LPPassManager : public FunctionPass, public PMDataManager { @@ -106,9 +107,7 @@ // LPPassManager needs LoopInfo. void getAnalysisUsage(AnalysisUsage &Info) const override; - const char *getPassName() const override { - return "Loop Pass Manager"; - } + StringRef getPassName() const override { return "Loop Pass Manager"; } PMDataManager *getAsPMDataManager() override { return this; } Pass *getAsPass() override { return this; } @@ -156,6 +155,22 @@ Loop *CurrentLoop; }; +// This pass is required by the LCSSA transformation. It is used inside +// LPPassManager to check if current pass preserves LCSSA form, and if it does +// pass manager calls lcssa verification for the current loop. +struct LCSSAVerificationPass : public FunctionPass { + static char ID; + LCSSAVerificationPass() : FunctionPass(ID) { + initializeLCSSAVerificationPassPass(*PassRegistry::getPassRegistry()); + } + + bool runOnFunction(Function &F) override { return false; } + + void getAnalysisUsage(AnalysisUsage &AU) const override { + AU.setPreservesAll(); + } +}; + } // End llvm namespace #endif