| //===- 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/Config/config.h" |
| #include <cstdlib> |
| |
| namespace llvm { |
| class Pass; |
| class PassInfo; |
| class PassRegistry; |
| class RegionPass; |
| } |
| |
| namespace polly { |
| #ifdef CLOOG_FOUND |
| llvm::Pass *createCloogExporterPass(); |
| llvm::Pass *createCloogInfoPass(); |
| llvm::Pass *createCodeGenerationPass(); |
| #endif |
| llvm::Pass *createCodePreparationPass(); |
| llvm::Pass *createDeadCodeElimPass(); |
| llvm::Pass *createDependencesPass(); |
| llvm::Pass *createDOTOnlyPrinterPass(); |
| llvm::Pass *createDOTOnlyViewerPass(); |
| llvm::Pass *createDOTPrinterPass(); |
| llvm::Pass *createDOTViewerPass(); |
| llvm::Pass *createIndependentBlocksPass(); |
| llvm::Pass *createIndVarSimplifyPass(); |
| llvm::Pass *createJSONExporterPass(); |
| llvm::Pass *createJSONImporterPass(); |
| #ifdef PLUTO_FOUND |
| llvm::Pass *createPlutoOptimizerPass(); |
| #endif |
| llvm::Pass *createScopDetectionPass(); |
| llvm::Pass *createScopInfoPass(); |
| llvm::Pass *createIslAstInfoPass(); |
| llvm::Pass *createIslCodeGenerationPass(); |
| llvm::Pass *createIslScheduleOptimizerPass(); |
| llvm::Pass *createTempScopInfoPass(); |
| |
| #ifdef OPENSCOP_FOUND |
| llvm::Pass *createScopExporterPass(); |
| llvm::Pass *createScopImporterPass(); |
| #endif |
| |
| #ifdef SCOPLIB_FOUND |
| llvm::Pass *createPoccPass(); |
| llvm::Pass *createScopLibExporterPass(); |
| llvm::Pass *createScopLibImporterPass(); |
| #endif |
| |
| extern char &IndependentBlocksID; |
| extern char &CodePreparationID; |
| } |
| |
| using 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; |
| |
| #ifdef CLOOG_FOUND |
| createCloogExporterPass(); |
| createCloogInfoPass(); |
| createCodeGenerationPass(); |
| #endif |
| createCodePreparationPass(); |
| createDeadCodeElimPass(); |
| createDependencesPass(); |
| createDOTOnlyPrinterPass(); |
| createDOTOnlyViewerPass(); |
| createDOTPrinterPass(); |
| createDOTViewerPass(); |
| createIndependentBlocksPass(); |
| createIndVarSimplifyPass(); |
| createJSONExporterPass(); |
| createJSONImporterPass(); |
| createScopDetectionPass(); |
| createScopInfoPass(); |
| #ifdef PLUTO_FOUND |
| createPlutoOptimizerPass(); |
| #endif |
| createIslAstInfoPass(); |
| createIslCodeGenerationPass(); |
| createIslScheduleOptimizerPass(); |
| createTempScopInfoPass(); |
| |
| #ifdef OPENSCOP_FOUND |
| createScopExporterPass(); |
| createScopImporterPass(); |
| #endif |
| #ifdef SCOPLIB_FOUND |
| createPoccPass(); |
| createScopLibExporterPass(); |
| createScopLibImporterPass(); |
| #endif |
| |
| } |
| } PollyForcePassLinking; // Force link by creating a global definition. |
| } |
| |
| namespace llvm { |
| class PassRegistry; |
| #ifdef CLOOG_FOUND |
| void initializeCodeGenerationPass(llvm::PassRegistry &); |
| #endif |
| void initializeCodePreparationPass(llvm::PassRegistry &); |
| void initializeDeadCodeElimPass(llvm::PassRegistry &); |
| void initializeIndependentBlocksPass(llvm::PassRegistry &); |
| void initializeJSONExporterPass(llvm::PassRegistry &); |
| void initializeJSONImporterPass(llvm::PassRegistry &); |
| void initializeIslAstInfoPass(llvm::PassRegistry &); |
| void initializeIslCodeGenerationPass(llvm::PassRegistry &); |
| void initializeIslScheduleOptimizerPass(llvm::PassRegistry &); |
| #ifdef PLUTO_FOUND |
| void initializePlutoOptimizerPass(llvm::PassRegistry &); |
| #endif |
| #ifdef SCOPLIB_FOUND |
| void initializePoccPass(llvm::PassRegistry &); |
| #endif |
| void initializePollyIndVarSimplifyPass(llvm::PassRegistry &); |
| } |
| |
| #endif |