| //===- polly/LinkAllPasses.h ----------- Reference All Passes ---*- C++ -*-===// |
| // |
| // The LLVM Compiler Infrastructure |
| // |
| // This file is distributed under the University of Illinois Open Source |
| // License. See LICENSE.TXT for details. |
| // |
| //===----------------------------------------------------------------------===// |
| // |
| // This header file pulls in all transformation and analysis passes for tools |
| // like opt and bugpoint that need this functionality. |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #ifndef POLLY_LINKALLPASSES_H |
| #define POLLY_LINKALLPASSES_H |
| |
| #include "polly/CodeGen/PPCGCodeGeneration.h" |
| #include "polly/Config/config.h" |
| #include "polly/PruneUnprofitable.h" |
| #include "polly/Simplify.h" |
| #include "polly/Support/DumpModulePass.h" |
| #include "llvm/ADT/StringRef.h" |
| #include <cstdlib> |
| |
| namespace llvm { |
| class Pass; |
| class PassInfo; |
| class PassRegistry; |
| class RegionPass; |
| } // namespace llvm |
| |
| namespace polly { |
| llvm::Pass *createCodePreparationPass(); |
| llvm::Pass *createScopInlinerPass(); |
| llvm::Pass *createDeadCodeElimPass(); |
| llvm::Pass *createDependenceInfoPass(); |
| llvm::Pass *createDependenceInfoWrapperPassPass(); |
| llvm::Pass *createDOTOnlyPrinterPass(); |
| llvm::Pass *createDOTOnlyViewerPass(); |
| llvm::Pass *createDOTPrinterPass(); |
| llvm::Pass *createDOTViewerPass(); |
| llvm::Pass *createJSONExporterPass(); |
| llvm::Pass *createJSONImporterPass(); |
| llvm::Pass *createPollyCanonicalizePass(); |
| llvm::Pass *createPolyhedralInfoPass(); |
| llvm::Pass *createScopDetectionWrapperPassPass(); |
| llvm::Pass *createScopInfoRegionPassPass(); |
| llvm::Pass *createScopInfoWrapperPassPass(); |
| llvm::Pass *createRewriteByrefParamsPass(); |
| llvm::Pass *createIslAstInfoWrapperPassPass(); |
| llvm::Pass *createCodeGenerationPass(); |
| #ifdef GPU_CODEGEN |
| llvm::Pass *createPPCGCodeGenerationPass(GPUArch Arch = GPUArch::NVPTX64, |
| GPURuntime Runtime = GPURuntime::CUDA); |
| |
| llvm::Pass * |
| createManagedMemoryRewritePassPass(GPUArch Arch = GPUArch::NVPTX64, |
| GPURuntime Runtime = GPURuntime::CUDA); |
| #endif |
| llvm::Pass *createIslScheduleOptimizerPass(); |
| llvm::Pass *createFlattenSchedulePass(); |
| llvm::Pass *createDeLICMPass(); |
| llvm::Pass *createMaximalStaticExpansionPass(); |
| |
| extern char &CodePreparationID; |
| } // namespace polly |
| |
| namespace { |
| struct PollyForcePassLinking { |
| PollyForcePassLinking() { |
| // We must reference the passes in such a way that compilers will not |
| // delete it all as dead code, even with whole program optimization, |
| // yet is effectively a NO-OP. As the compiler isn't smart enough |
| // to know that getenv() never returns -1, this will do the job. |
| if (std::getenv("bar") != (char *)-1) |
| return; |
| |
| polly::createCodePreparationPass(); |
| polly::createDeadCodeElimPass(); |
| polly::createDependenceInfoPass(); |
| polly::createDOTOnlyPrinterPass(); |
| polly::createDOTOnlyViewerPass(); |
| polly::createDOTPrinterPass(); |
| polly::createDOTViewerPass(); |
| polly::createJSONExporterPass(); |
| polly::createJSONImporterPass(); |
| polly::createScopDetectionWrapperPassPass(); |
| polly::createScopInfoRegionPassPass(); |
| polly::createPollyCanonicalizePass(); |
| polly::createPolyhedralInfoPass(); |
| polly::createIslAstInfoWrapperPassPass(); |
| polly::createCodeGenerationPass(); |
| #ifdef GPU_CODEGEN |
| polly::createPPCGCodeGenerationPass(); |
| polly::createManagedMemoryRewritePassPass(); |
| #endif |
| polly::createIslScheduleOptimizerPass(); |
| polly::createMaximalStaticExpansionPass(); |
| polly::createFlattenSchedulePass(); |
| polly::createDeLICMPass(); |
| polly::createDumpModulePass("", true); |
| polly::createSimplifyPass(); |
| polly::createPruneUnprofitablePass(); |
| } |
| } PollyForcePassLinking; // Force link by creating a global definition. |
| } // namespace |
| |
| namespace llvm { |
| class PassRegistry; |
| void initializeCodePreparationPass(llvm::PassRegistry &); |
| void initializeScopInlinerPass(llvm::PassRegistry &); |
| void initializeDeadCodeElimPass(llvm::PassRegistry &); |
| void initializeJSONExporterPass(llvm::PassRegistry &); |
| void initializeJSONImporterPass(llvm::PassRegistry &); |
| void initializeIslAstInfoWrapperPassPass(llvm::PassRegistry &); |
| void initializeCodeGenerationPass(llvm::PassRegistry &); |
| void initializeRewriteByrefParamsPass(llvm::PassRegistry &); |
| #ifdef GPU_CODEGEN |
| void initializePPCGCodeGenerationPass(llvm::PassRegistry &); |
| void initializeManagedMemoryRewritePassPass(llvm::PassRegistry &); |
| #endif |
| void initializeIslScheduleOptimizerPass(llvm::PassRegistry &); |
| void initializeMaximalStaticExpanderPass(llvm::PassRegistry &); |
| void initializePollyCanonicalizePass(llvm::PassRegistry &); |
| void initializeFlattenSchedulePass(llvm::PassRegistry &); |
| void initializeDeLICMPass(llvm::PassRegistry &); |
| } // namespace llvm |
| |
| #endif |