| #include "llvm/IR/PassManager.h" |
| #include "polly/CodeGen/IslAst.h" |
| #include "polly/DependenceInfo.h" |
| #include "polly/ScopPass.h" |
| #include "llvm/Analysis/AliasAnalysis.h" |
| #include "llvm/Analysis/CGSCCPassManager.h" |
| #include "llvm/Passes/PassBuilder.h" |
| #include "llvm/Transforms/Scalar/LoopPassManager.h" |
| #include "gtest/gtest.h" |
| |
| using namespace polly; |
| using namespace llvm; |
| |
| namespace { |
| class ScopPassRegistry : public ::testing::Test { |
| protected: |
| ModuleAnalysisManager MAM; |
| FunctionAnalysisManager FAM; |
| LoopAnalysisManager LAM; |
| CGSCCAnalysisManager CGAM; |
| ScopAnalysisManager SAM; |
| AAManager AM; |
| |
| public: |
| ScopPassRegistry(ScopPassRegistry &&) = delete; |
| ScopPassRegistry(const ScopPassRegistry &) = delete; |
| ScopPassRegistry &operator=(ScopPassRegistry &&) = delete; |
| ScopPassRegistry &operator=(const ScopPassRegistry &) = delete; |
| ScopPassRegistry() { |
| PassBuilder PB; |
| |
| AM = PB.buildDefaultAAPipeline(); |
| PB.registerModuleAnalyses(MAM); |
| PB.registerFunctionAnalyses(FAM); |
| PB.registerLoopAnalyses(LAM); |
| PB.registerCGSCCAnalyses(CGAM); |
| |
| FAM.registerPass([] { return ScopAnalysis(); }); |
| FAM.registerPass([] { return ScopInfoAnalysis(); }); |
| FAM.registerPass([this] { return ScopAnalysisManagerFunctionProxy(SAM); }); |
| |
| // SAM.registerPass([] { return IslAstAnalysis(); }); |
| // SAM.registerPass([] { return DependenceAnalysis(); }); |
| SAM.registerPass([this] { return FunctionAnalysisManagerScopProxy(FAM); }); |
| |
| PB.crossRegisterProxies(LAM, FAM, CGAM, MAM); |
| } |
| }; |
| |
| TEST_F(ScopPassRegistry, PrintScops) { |
| FunctionPassManager FPM; |
| FPM.addPass(ScopAnalysisPrinterPass(errs())); |
| } |
| |
| TEST_F(ScopPassRegistry, PrintScopInfo) { |
| FunctionPassManager FPM; |
| FPM.addPass(ScopInfoPrinterPass(errs())); |
| } |
| |
| TEST_F(ScopPassRegistry, PrinIslAstInfo) { |
| FunctionPassManager FPM; |
| ScopPassManager SPM; |
| // SPM.addPass(IslAstPrinterPass(errs())); |
| FPM.addPass(createFunctionToScopPassAdaptor(std::move(SPM))); |
| } |
| } // namespace |