Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-05-10 08:48:20

0001 //===- polly/LinkAllPasses.h ----------- Reference All Passes ---*- C++ -*-===//
0002 //
0003 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
0004 // See https://llvm.org/LICENSE.txt for license information.
0005 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
0006 //
0007 //===----------------------------------------------------------------------===//
0008 //
0009 // This header file pulls in all transformation and analysis passes for tools
0010 // like opt and bugpoint that need this functionality.
0011 //
0012 //===----------------------------------------------------------------------===//
0013 
0014 #ifndef POLLY_LINKALLPASSES_H
0015 #define POLLY_LINKALLPASSES_H
0016 
0017 #include "polly/Config/config.h"
0018 #include "polly/Support/DumpFunctionPass.h"
0019 #include "polly/Support/DumpModulePass.h"
0020 #include "llvm/ADT/StringRef.h"
0021 #include <cstdlib>
0022 
0023 namespace llvm {
0024 class Pass;
0025 class PassRegistry;
0026 } // namespace llvm
0027 
0028 namespace polly {
0029 llvm::Pass *createCodePreparationPass();
0030 llvm::Pass *createScopInlinerPass();
0031 llvm::Pass *createDeadCodeElimWrapperPass();
0032 llvm::Pass *createDependenceInfoPass();
0033 llvm::Pass *createDependenceInfoPrinterLegacyPass(llvm::raw_ostream &OS);
0034 llvm::Pass *createDependenceInfoWrapperPassPass();
0035 llvm::Pass *
0036 createDependenceInfoPrinterLegacyFunctionPass(llvm::raw_ostream &OS);
0037 llvm::Pass *createDOTOnlyPrinterWrapperPass();
0038 llvm::Pass *createDOTOnlyViewerWrapperPass();
0039 llvm::Pass *createDOTPrinterWrapperPass();
0040 llvm::Pass *createDOTViewerWrapperPass();
0041 llvm::Pass *createJSONExporterPass();
0042 llvm::Pass *createJSONImporterPass();
0043 llvm::Pass *createJSONImporterPrinterLegacyPass(llvm::raw_ostream &OS);
0044 llvm::Pass *createPollyCanonicalizePass();
0045 llvm::Pass *createPolyhedralInfoPass();
0046 llvm::Pass *createPolyhedralInfoPrinterLegacyPass(llvm::raw_ostream &OS);
0047 llvm::Pass *createScopDetectionWrapperPassPass();
0048 llvm::Pass *createScopDetectionPrinterLegacyPass(llvm::raw_ostream &OS);
0049 llvm::Pass *createScopInfoRegionPassPass();
0050 llvm::Pass *createScopInfoPrinterLegacyRegionPass(llvm::raw_ostream &OS);
0051 llvm::Pass *createScopInfoWrapperPassPass();
0052 llvm::Pass *createScopInfoPrinterLegacyFunctionPass(llvm::raw_ostream &OS);
0053 llvm::Pass *createIslAstInfoWrapperPassPass();
0054 llvm::Pass *createIslAstInfoPrinterLegacyPass(llvm::raw_ostream &OS);
0055 llvm::Pass *createCodeGenerationPass();
0056 llvm::Pass *createIslScheduleOptimizerWrapperPass();
0057 llvm::Pass *createIslScheduleOptimizerPrinterLegacyPass(llvm::raw_ostream &OS);
0058 llvm::Pass *createFlattenSchedulePass();
0059 llvm::Pass *createFlattenSchedulePrinterLegacyPass(llvm::raw_ostream &OS);
0060 llvm::Pass *createForwardOpTreeWrapperPass();
0061 llvm::Pass *createForwardOpTreePrinterLegacyPass(llvm::raw_ostream &OS);
0062 llvm::Pass *createDeLICMWrapperPass();
0063 llvm::Pass *createDeLICMPrinterLegacyPass(llvm::raw_ostream &OS);
0064 llvm::Pass *createMaximalStaticExpansionPass();
0065 llvm::Pass *createSimplifyWrapperPass(int);
0066 llvm::Pass *createSimplifyPrinterLegacyPass(llvm::raw_ostream &OS);
0067 llvm::Pass *createPruneUnprofitableWrapperPass();
0068 
0069 extern char &CodePreparationID;
0070 } // namespace polly
0071 
0072 namespace {
0073 struct PollyForcePassLinking {
0074   PollyForcePassLinking() {
0075     // We must reference the passes in such a way that compilers will not
0076     // delete it all as dead code, even with whole program optimization,
0077     // yet is effectively a NO-OP. As the compiler isn't smart enough
0078     // to know that getenv() never returns -1, this will do the job.
0079     if (std::getenv("bar") != (char *)-1)
0080       return;
0081 
0082     polly::createCodePreparationPass();
0083     polly::createDeadCodeElimWrapperPass();
0084     polly::createDependenceInfoPass();
0085     polly::createDependenceInfoPrinterLegacyPass(llvm::outs());
0086     polly::createDependenceInfoWrapperPassPass();
0087     polly::createDependenceInfoPrinterLegacyFunctionPass(llvm::outs());
0088     polly::createDOTOnlyPrinterWrapperPass();
0089     polly::createDOTOnlyViewerWrapperPass();
0090     polly::createDOTPrinterWrapperPass();
0091     polly::createDOTViewerWrapperPass();
0092     polly::createJSONExporterPass();
0093     polly::createJSONImporterPass();
0094     polly::createJSONImporterPrinterLegacyPass(llvm::outs());
0095     polly::createScopDetectionWrapperPassPass();
0096     polly::createScopDetectionPrinterLegacyPass(llvm::outs());
0097     polly::createScopInfoRegionPassPass();
0098     polly::createScopInfoPrinterLegacyRegionPass(llvm::outs());
0099     polly::createScopInfoWrapperPassPass();
0100     polly::createScopInfoPrinterLegacyFunctionPass(llvm::outs());
0101     polly::createPollyCanonicalizePass();
0102     polly::createPolyhedralInfoPass();
0103     polly::createPolyhedralInfoPrinterLegacyPass(llvm::outs());
0104     polly::createIslAstInfoWrapperPassPass();
0105     polly::createIslAstInfoPrinterLegacyPass(llvm::outs());
0106     polly::createCodeGenerationPass();
0107     polly::createIslScheduleOptimizerWrapperPass();
0108     polly::createIslScheduleOptimizerPrinterLegacyPass(llvm::outs());
0109     polly::createMaximalStaticExpansionPass();
0110     polly::createFlattenSchedulePass();
0111     polly::createFlattenSchedulePrinterLegacyPass(llvm::errs());
0112     polly::createForwardOpTreeWrapperPass();
0113     polly::createForwardOpTreePrinterLegacyPass(llvm::errs());
0114     polly::createDeLICMWrapperPass();
0115     polly::createDeLICMPrinterLegacyPass(llvm::outs());
0116     polly::createDumpModuleWrapperPass("", true);
0117     polly::createDumpFunctionWrapperPass("");
0118     polly::createSimplifyWrapperPass(0);
0119     polly::createSimplifyPrinterLegacyPass(llvm::outs());
0120     polly::createPruneUnprofitableWrapperPass();
0121   }
0122 } PollyForcePassLinking; // Force link by creating a global definition.
0123 } // namespace
0124 
0125 namespace llvm {
0126 void initializeCodePreparationPass(llvm::PassRegistry &);
0127 void initializeScopInlinerPass(llvm::PassRegistry &);
0128 void initializeScopDetectionWrapperPassPass(llvm::PassRegistry &);
0129 void initializeScopDetectionPrinterLegacyPassPass(llvm::PassRegistry &);
0130 void initializeScopInfoRegionPassPass(PassRegistry &);
0131 void initializeScopInfoPrinterLegacyRegionPassPass(llvm::PassRegistry &);
0132 void initializeScopInfoWrapperPassPass(PassRegistry &);
0133 void initializeScopInfoPrinterLegacyFunctionPassPass(PassRegistry &);
0134 void initializeDeadCodeElimWrapperPassPass(llvm::PassRegistry &);
0135 void initializeJSONExporterPass(llvm::PassRegistry &);
0136 void initializeJSONImporterPass(llvm::PassRegistry &);
0137 void initializeJSONImporterPrinterLegacyPassPass(llvm::PassRegistry &);
0138 void initializeDependenceInfoPass(llvm::PassRegistry &);
0139 void initializeDependenceInfoPrinterLegacyPassPass(llvm::PassRegistry &);
0140 void initializeDependenceInfoWrapperPassPass(llvm::PassRegistry &);
0141 void initializeDependenceInfoPrinterLegacyFunctionPassPass(
0142     llvm::PassRegistry &);
0143 void initializeIslAstInfoWrapperPassPass(llvm::PassRegistry &);
0144 void initializeIslAstInfoPrinterLegacyPassPass(llvm::PassRegistry &);
0145 void initializeCodeGenerationPass(llvm::PassRegistry &);
0146 void initializeIslScheduleOptimizerWrapperPassPass(llvm::PassRegistry &);
0147 void initializeIslScheduleOptimizerPrinterLegacyPassPass(llvm::PassRegistry &);
0148 void initializeMaximalStaticExpanderWrapperPassPass(llvm::PassRegistry &);
0149 void initializePollyCanonicalizePass(llvm::PassRegistry &);
0150 void initializeFlattenSchedulePass(llvm::PassRegistry &);
0151 void initializeFlattenSchedulePrinterLegacyPassPass(llvm::PassRegistry &);
0152 void initializeForwardOpTreeWrapperPassPass(llvm::PassRegistry &);
0153 void initializeForwardOpTreePrinterLegacyPassPass(PassRegistry &);
0154 void initializeDeLICMWrapperPassPass(llvm::PassRegistry &);
0155 void initializeDeLICMPrinterLegacyPassPass(llvm::PassRegistry &);
0156 void initializeSimplifyWrapperPassPass(llvm::PassRegistry &);
0157 void initializeSimplifyPrinterLegacyPassPass(llvm::PassRegistry &);
0158 void initializePruneUnprofitableWrapperPassPass(llvm::PassRegistry &);
0159 void initializePolyhedralInfoPass(llvm::PassRegistry &);
0160 void initializePolyhedralInfoPrinterLegacyPassPass(llvm::PassRegistry &);
0161 } // namespace llvm
0162 
0163 #endif