- //===- polly/LinkAllPasses.h ----------- Reference All Passes ---*- C++ -*-===// 
- // 
- // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 
- // See https://llvm.org/LICENSE.txt for license information. 
- // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 
- // 
- //===----------------------------------------------------------------------===// 
- // 
- // 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/Support/DumpFunctionPass.h" 
- #include "polly/Support/DumpModulePass.h" 
- #include "llvm/ADT/StringRef.h" 
- #include <cstdlib> 
-   
- namespace llvm { 
- class Pass; 
- class PassRegistry; 
- } // namespace llvm 
-   
- namespace polly { 
- llvm::Pass *createCodePreparationPass(); 
- llvm::Pass *createScopInlinerPass(); 
- llvm::Pass *createDeadCodeElimWrapperPass(); 
- llvm::Pass *createDependenceInfoPass(); 
- llvm::Pass *createDependenceInfoPrinterLegacyPass(llvm::raw_ostream &OS); 
- llvm::Pass *createDependenceInfoWrapperPassPass(); 
- llvm::Pass * 
- createDependenceInfoPrinterLegacyFunctionPass(llvm::raw_ostream &OS); 
- llvm::Pass *createDOTOnlyPrinterWrapperPass(); 
- llvm::Pass *createDOTOnlyViewerWrapperPass(); 
- llvm::Pass *createDOTPrinterWrapperPass(); 
- llvm::Pass *createDOTViewerWrapperPass(); 
- llvm::Pass *createJSONExporterPass(); 
- llvm::Pass *createJSONImporterPass(); 
- llvm::Pass *createJSONImporterPrinterLegacyPass(llvm::raw_ostream &OS); 
- llvm::Pass *createPollyCanonicalizePass(); 
- llvm::Pass *createPolyhedralInfoPass(); 
- llvm::Pass *createPolyhedralInfoPrinterLegacyPass(llvm::raw_ostream &OS); 
- llvm::Pass *createScopDetectionWrapperPassPass(); 
- llvm::Pass *createScopDetectionPrinterLegacyPass(llvm::raw_ostream &OS); 
- llvm::Pass *createScopInfoRegionPassPass(); 
- llvm::Pass *createScopInfoPrinterLegacyRegionPass(llvm::raw_ostream &OS); 
- llvm::Pass *createScopInfoWrapperPassPass(); 
- llvm::Pass *createScopInfoPrinterLegacyFunctionPass(llvm::raw_ostream &OS); 
- llvm::Pass *createIslAstInfoWrapperPassPass(); 
- llvm::Pass *createIslAstInfoPrinterLegacyPass(llvm::raw_ostream &OS); 
- 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 *createIslScheduleOptimizerWrapperPass(); 
- llvm::Pass *createIslScheduleOptimizerPrinterLegacyPass(llvm::raw_ostream &OS); 
- llvm::Pass *createFlattenSchedulePass(); 
- llvm::Pass *createFlattenSchedulePrinterLegacyPass(llvm::raw_ostream &OS); 
- llvm::Pass *createForwardOpTreeWrapperPass(); 
- llvm::Pass *createForwardOpTreePrinterLegacyPass(llvm::raw_ostream &OS); 
- llvm::Pass *createDeLICMWrapperPass(); 
- llvm::Pass *createDeLICMPrinterLegacyPass(llvm::raw_ostream &OS); 
- llvm::Pass *createMaximalStaticExpansionPass(); 
- llvm::Pass *createSimplifyWrapperPass(int); 
- llvm::Pass *createSimplifyPrinterLegacyPass(llvm::raw_ostream &OS); 
- llvm::Pass *createPruneUnprofitableWrapperPass(); 
-   
- 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::createDeadCodeElimWrapperPass(); 
-     polly::createDependenceInfoPass(); 
-     polly::createDependenceInfoPrinterLegacyPass(llvm::outs()); 
-     polly::createDependenceInfoWrapperPassPass(); 
-     polly::createDependenceInfoPrinterLegacyFunctionPass(llvm::outs()); 
-     polly::createDOTOnlyPrinterWrapperPass(); 
-     polly::createDOTOnlyViewerWrapperPass(); 
-     polly::createDOTPrinterWrapperPass(); 
-     polly::createDOTViewerWrapperPass(); 
-     polly::createJSONExporterPass(); 
-     polly::createJSONImporterPass(); 
-     polly::createJSONImporterPrinterLegacyPass(llvm::outs()); 
-     polly::createScopDetectionWrapperPassPass(); 
-     polly::createScopDetectionPrinterLegacyPass(llvm::outs()); 
-     polly::createScopInfoRegionPassPass(); 
-     polly::createScopInfoPrinterLegacyRegionPass(llvm::outs()); 
-     polly::createScopInfoWrapperPassPass(); 
-     polly::createScopInfoPrinterLegacyFunctionPass(llvm::outs()); 
-     polly::createPollyCanonicalizePass(); 
-     polly::createPolyhedralInfoPass(); 
-     polly::createPolyhedralInfoPrinterLegacyPass(llvm::outs()); 
-     polly::createIslAstInfoWrapperPassPass(); 
-     polly::createIslAstInfoPrinterLegacyPass(llvm::outs()); 
-     polly::createCodeGenerationPass(); 
- #ifdef GPU_CODEGEN 
-     polly::createPPCGCodeGenerationPass(); 
-     polly::createManagedMemoryRewritePassPass(); 
- #endif 
-     polly::createIslScheduleOptimizerWrapperPass(); 
-     polly::createIslScheduleOptimizerPrinterLegacyPass(llvm::outs()); 
-     polly::createMaximalStaticExpansionPass(); 
-     polly::createFlattenSchedulePass(); 
-     polly::createFlattenSchedulePrinterLegacyPass(llvm::errs()); 
-     polly::createForwardOpTreeWrapperPass(); 
-     polly::createForwardOpTreePrinterLegacyPass(llvm::errs()); 
-     polly::createDeLICMWrapperPass(); 
-     polly::createDeLICMPrinterLegacyPass(llvm::outs()); 
-     polly::createDumpModuleWrapperPass("", true); 
-     polly::createDumpFunctionWrapperPass(""); 
-     polly::createSimplifyWrapperPass(0); 
-     polly::createSimplifyPrinterLegacyPass(llvm::outs()); 
-     polly::createPruneUnprofitableWrapperPass(); 
-   } 
- } PollyForcePassLinking; // Force link by creating a global definition. 
- } // namespace 
-   
- namespace llvm { 
- void initializeCodePreparationPass(llvm::PassRegistry &); 
- void initializeScopInlinerPass(llvm::PassRegistry &); 
- void initializeScopDetectionWrapperPassPass(llvm::PassRegistry &); 
- void initializeScopDetectionPrinterLegacyPassPass(llvm::PassRegistry &); 
- void initializeScopInfoRegionPassPass(PassRegistry &); 
- void initializeScopInfoPrinterLegacyRegionPassPass(llvm::PassRegistry &); 
- void initializeScopInfoWrapperPassPass(PassRegistry &); 
- void initializeScopInfoPrinterLegacyFunctionPassPass(PassRegistry &); 
- void initializeDeadCodeElimWrapperPassPass(llvm::PassRegistry &); 
- void initializeJSONExporterPass(llvm::PassRegistry &); 
- void initializeJSONImporterPass(llvm::PassRegistry &); 
- void initializeJSONImporterPrinterLegacyPassPass(llvm::PassRegistry &); 
- void initializeDependenceInfoPass(llvm::PassRegistry &); 
- void initializeDependenceInfoPrinterLegacyPassPass(llvm::PassRegistry &); 
- void initializeDependenceInfoWrapperPassPass(llvm::PassRegistry &); 
- void initializeDependenceInfoPrinterLegacyFunctionPassPass( 
-     llvm::PassRegistry &); 
- void initializeIslAstInfoWrapperPassPass(llvm::PassRegistry &); 
- void initializeIslAstInfoPrinterLegacyPassPass(llvm::PassRegistry &); 
- void initializeCodeGenerationPass(llvm::PassRegistry &); 
- #ifdef GPU_CODEGEN 
- void initializePPCGCodeGenerationPass(llvm::PassRegistry &); 
- void initializeManagedMemoryRewritePassPass(llvm::PassRegistry &); 
- #endif 
- void initializeIslScheduleOptimizerWrapperPassPass(llvm::PassRegistry &); 
- void initializeIslScheduleOptimizerPrinterLegacyPassPass(llvm::PassRegistry &); 
- void initializeMaximalStaticExpanderWrapperPassPass(llvm::PassRegistry &); 
- void initializePollyCanonicalizePass(llvm::PassRegistry &); 
- void initializeFlattenSchedulePass(llvm::PassRegistry &); 
- void initializeFlattenSchedulePrinterLegacyPassPass(llvm::PassRegistry &); 
- void initializeForwardOpTreeWrapperPassPass(llvm::PassRegistry &); 
- void initializeForwardOpTreePrinterLegacyPassPass(PassRegistry &); 
- void initializeDeLICMWrapperPassPass(llvm::PassRegistry &); 
- void initializeDeLICMPrinterLegacyPassPass(llvm::PassRegistry &); 
- void initializeSimplifyWrapperPassPass(llvm::PassRegistry &); 
- void initializeSimplifyPrinterLegacyPassPass(llvm::PassRegistry &); 
- void initializePruneUnprofitableWrapperPassPass(llvm::PassRegistry &); 
- void initializePolyhedralInfoPass(llvm::PassRegistry &); 
- void initializePolyhedralInfoPrinterLegacyPassPass(llvm::PassRegistry &); 
- } // namespace llvm 
-   
- #endif 
-