//===- 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/Config/config.h" #include "polly/Support/DumpFunctionPass.h" #include "polly/Support/DumpModulePass.h" #include "llvm/ADT/StringRef.h" #include 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(); 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(); 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 &); 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