]>
Commit | Line | Data |
---|---|---|
223e47cc LB |
1 | //===- llvm/LinkAllPasses.h ------------ Reference All Passes ---*- C++ -*-===// |
2 | // | |
3 | // The LLVM Compiler Infrastructure | |
4 | // | |
5 | // This file is distributed under the University of Illinois Open Source | |
6 | // License. See LICENSE.TXT for details. | |
7 | // | |
8 | //===----------------------------------------------------------------------===// | |
9 | // | |
10 | // This header file pulls in all transformation and analysis passes for tools | |
11 | // like opt and bugpoint that need this functionality. | |
12 | // | |
13 | //===----------------------------------------------------------------------===// | |
14 | ||
15 | #ifndef LLVM_LINKALLPASSES_H | |
16 | #define LLVM_LINKALLPASSES_H | |
17 | ||
18 | #include "llvm/Analysis/AliasSetTracker.h" | |
970d7e83 | 19 | #include "llvm/Analysis/CallPrinter.h" |
223e47cc | 20 | #include "llvm/Analysis/DomPrinter.h" |
223e47cc | 21 | #include "llvm/Analysis/IntervalPartition.h" |
970d7e83 | 22 | #include "llvm/Analysis/Lint.h" |
223e47cc LB |
23 | #include "llvm/Analysis/Passes.h" |
24 | #include "llvm/Analysis/PostDominators.h" | |
25 | #include "llvm/Analysis/RegionPass.h" | |
26 | #include "llvm/Analysis/RegionPrinter.h" | |
27 | #include "llvm/Analysis/ScalarEvolution.h" | |
223e47cc | 28 | #include "llvm/CodeGen/Passes.h" |
970d7e83 | 29 | #include "llvm/IR/Function.h" |
1a4d82fc | 30 | #include "llvm/IR/IRPrintingPasses.h" |
223e47cc | 31 | #include "llvm/Transforms/IPO.h" |
970d7e83 LB |
32 | #include "llvm/Transforms/Instrumentation.h" |
33 | #include "llvm/Transforms/ObjCARC.h" | |
223e47cc | 34 | #include "llvm/Transforms/Scalar.h" |
85aaf69f | 35 | #include "llvm/Transforms/Utils/SymbolRewriter.h" |
223e47cc | 36 | #include "llvm/Transforms/Utils/UnifyFunctionExitNodes.h" |
970d7e83 | 37 | #include "llvm/Transforms/Vectorize.h" |
223e47cc LB |
38 | #include <cstdlib> |
39 | ||
40 | namespace { | |
41 | struct ForcePassLinking { | |
42 | ForcePassLinking() { | |
43 | // We must reference the passes in such a way that compilers will not | |
44 | // delete it all as dead code, even with whole program optimization, | |
45 | // yet is effectively a NO-OP. As the compiler isn't smart enough | |
46 | // to know that getenv() never returns -1, this will do the job. | |
47 | if (std::getenv("bar") != (char*) -1) | |
48 | return; | |
49 | ||
50 | (void) llvm::createAAEvalPass(); | |
51 | (void) llvm::createAggressiveDCEPass(); | |
52 | (void) llvm::createAliasAnalysisCounterPass(); | |
53 | (void) llvm::createAliasDebugger(); | |
54 | (void) llvm::createArgumentPromotionPass(); | |
1a4d82fc | 55 | (void) llvm::createAlignmentFromAssumptionsPass(); |
223e47cc | 56 | (void) llvm::createBasicAliasAnalysisPass(); |
1a4d82fc | 57 | (void) llvm::createLibCallAliasAnalysisPass(nullptr); |
223e47cc LB |
58 | (void) llvm::createScalarEvolutionAliasAnalysisPass(); |
59 | (void) llvm::createTypeBasedAliasAnalysisPass(); | |
1a4d82fc | 60 | (void) llvm::createScopedNoAliasAAPass(); |
223e47cc LB |
61 | (void) llvm::createBoundsCheckingPass(); |
62 | (void) llvm::createBreakCriticalEdgesPass(); | |
970d7e83 LB |
63 | (void) llvm::createCallGraphPrinterPass(); |
64 | (void) llvm::createCallGraphViewerPass(); | |
223e47cc | 65 | (void) llvm::createCFGSimplificationPass(); |
1a4d82fc JJ |
66 | (void) llvm::createCFLAliasAnalysisPass(); |
67 | (void) llvm::createStructurizeCFGPass(); | |
223e47cc LB |
68 | (void) llvm::createConstantMergePass(); |
69 | (void) llvm::createConstantPropagationPass(); | |
970d7e83 | 70 | (void) llvm::createCostModelAnalysisPass(); |
223e47cc LB |
71 | (void) llvm::createDeadArgEliminationPass(); |
72 | (void) llvm::createDeadCodeEliminationPass(); | |
73 | (void) llvm::createDeadInstEliminationPass(); | |
74 | (void) llvm::createDeadStoreEliminationPass(); | |
970d7e83 | 75 | (void) llvm::createDependenceAnalysisPass(); |
223e47cc LB |
76 | (void) llvm::createDomOnlyPrinterPass(); |
77 | (void) llvm::createDomPrinterPass(); | |
78 | (void) llvm::createDomOnlyViewerPass(); | |
79 | (void) llvm::createDomViewerPass(); | |
223e47cc | 80 | (void) llvm::createGCOVProfilerPass(); |
85aaf69f | 81 | (void) llvm::createInstrProfilingPass(); |
223e47cc LB |
82 | (void) llvm::createFunctionInliningPass(); |
83 | (void) llvm::createAlwaysInlinerPass(); | |
84 | (void) llvm::createGlobalDCEPass(); | |
85 | (void) llvm::createGlobalOptimizerPass(); | |
86 | (void) llvm::createGlobalsModRefPass(); | |
87 | (void) llvm::createIPConstantPropagationPass(); | |
88 | (void) llvm::createIPSCCPPass(); | |
89 | (void) llvm::createIndVarSimplifyPass(); | |
90 | (void) llvm::createInstructionCombiningPass(); | |
970d7e83 | 91 | (void) llvm::createInternalizePass(); |
1a4d82fc JJ |
92 | (void) llvm::createJumpInstrTableInfoPass(); |
93 | (void) llvm::createJumpInstrTablesPass(); | |
223e47cc LB |
94 | (void) llvm::createLCSSAPass(); |
95 | (void) llvm::createLICMPass(); | |
96 | (void) llvm::createLazyValueInfoPass(); | |
223e47cc LB |
97 | (void) llvm::createLoopExtractorPass(); |
98 | (void) llvm::createLoopSimplifyPass(); | |
99 | (void) llvm::createLoopStrengthReducePass(); | |
1a4d82fc | 100 | (void) llvm::createLoopRerollPass(); |
223e47cc LB |
101 | (void) llvm::createLoopUnrollPass(); |
102 | (void) llvm::createLoopUnswitchPass(); | |
103 | (void) llvm::createLoopIdiomPass(); | |
104 | (void) llvm::createLoopRotatePass(); | |
105 | (void) llvm::createLowerExpectIntrinsicPass(); | |
106 | (void) llvm::createLowerInvokePass(); | |
107 | (void) llvm::createLowerSwitchPass(); | |
108 | (void) llvm::createNoAAPass(); | |
223e47cc LB |
109 | (void) llvm::createObjCARCAliasAnalysisPass(); |
110 | (void) llvm::createObjCARCAPElimPass(); | |
111 | (void) llvm::createObjCARCExpandPass(); | |
112 | (void) llvm::createObjCARCContractPass(); | |
113 | (void) llvm::createObjCARCOptPass(); | |
85aaf69f | 114 | (void) llvm::createPAEvalPass(); |
223e47cc LB |
115 | (void) llvm::createPromoteMemoryToRegisterPass(); |
116 | (void) llvm::createDemoteRegisterToMemoryPass(); | |
117 | (void) llvm::createPruneEHPass(); | |
118 | (void) llvm::createPostDomOnlyPrinterPass(); | |
119 | (void) llvm::createPostDomPrinterPass(); | |
120 | (void) llvm::createPostDomOnlyViewerPass(); | |
121 | (void) llvm::createPostDomViewerPass(); | |
122 | (void) llvm::createReassociatePass(); | |
123 | (void) llvm::createRegionInfoPass(); | |
124 | (void) llvm::createRegionOnlyPrinterPass(); | |
125 | (void) llvm::createRegionOnlyViewerPass(); | |
126 | (void) llvm::createRegionPrinterPass(); | |
127 | (void) llvm::createRegionViewerPass(); | |
128 | (void) llvm::createSCCPPass(); | |
129 | (void) llvm::createScalarReplAggregatesPass(); | |
223e47cc LB |
130 | (void) llvm::createSingleLoopExtractorPass(); |
131 | (void) llvm::createStripSymbolsPass(); | |
132 | (void) llvm::createStripNonDebugSymbolsPass(); | |
133 | (void) llvm::createStripDeadDebugInfoPass(); | |
134 | (void) llvm::createStripDeadPrototypesPass(); | |
135 | (void) llvm::createTailCallEliminationPass(); | |
136 | (void) llvm::createJumpThreadingPass(); | |
137 | (void) llvm::createUnifyFunctionExitNodesPass(); | |
138 | (void) llvm::createInstCountPass(); | |
1a4d82fc | 139 | (void) llvm::createConstantHoistingPass(); |
223e47cc LB |
140 | (void) llvm::createCodeGenPreparePass(); |
141 | (void) llvm::createEarlyCSEPass(); | |
1a4d82fc | 142 | (void) llvm::createMergedLoadStoreMotionPass(); |
223e47cc LB |
143 | (void) llvm::createGVNPass(); |
144 | (void) llvm::createMemCpyOptPass(); | |
145 | (void) llvm::createLoopDeletionPass(); | |
146 | (void) llvm::createPostDomTree(); | |
147 | (void) llvm::createInstructionNamerPass(); | |
148 | (void) llvm::createMetaRenamerPass(); | |
149 | (void) llvm::createFunctionAttrsPass(); | |
150 | (void) llvm::createMergeFunctionsPass(); | |
1a4d82fc JJ |
151 | (void) llvm::createPrintModulePass(*(llvm::raw_ostream*)nullptr); |
152 | (void) llvm::createPrintFunctionPass(*(llvm::raw_ostream*)nullptr); | |
153 | (void) llvm::createPrintBasicBlockPass(*(llvm::raw_ostream*)nullptr); | |
223e47cc LB |
154 | (void) llvm::createModuleDebugInfoPrinterPass(); |
155 | (void) llvm::createPartialInliningPass(); | |
156 | (void) llvm::createLintPass(); | |
157 | (void) llvm::createSinkingPass(); | |
158 | (void) llvm::createLowerAtomicPass(); | |
159 | (void) llvm::createCorrelatedValuePropagationPass(); | |
160 | (void) llvm::createMemDepPrinter(); | |
161 | (void) llvm::createInstructionSimplifierPass(); | |
970d7e83 | 162 | (void) llvm::createLoopVectorizePass(); |
1a4d82fc | 163 | (void) llvm::createSLPVectorizerPass(); |
223e47cc | 164 | (void) llvm::createBBVectorizePass(); |
1a4d82fc JJ |
165 | (void) llvm::createPartiallyInlineLibCallsPass(); |
166 | (void) llvm::createScalarizerPass(); | |
167 | (void) llvm::createSeparateConstOffsetFromGEPPass(); | |
85aaf69f | 168 | (void) llvm::createRewriteSymbolsPass(); |
1a4d82fc JJ |
169 | |
170 | // Specific to the rust-lang llvm branch: | |
171 | (void) llvm::createNullCheckEliminationPass(); | |
223e47cc LB |
172 | |
173 | (void)new llvm::IntervalPartition(); | |
223e47cc | 174 | (void)new llvm::ScalarEvolution(); |
1a4d82fc | 175 | ((llvm::Function*)nullptr)->viewCFGOnly(); |
223e47cc | 176 | llvm::RGPassManager RGM; |
1a4d82fc JJ |
177 | ((llvm::RegionPass*)nullptr)->runOnRegion((llvm::Region*)nullptr, RGM); |
178 | llvm::AliasSetTracker X(*(llvm::AliasAnalysis*)nullptr); | |
85aaf69f | 179 | X.add(nullptr, 0, llvm::AAMDNodes()); // for -print-alias-sets |
223e47cc LB |
180 | } |
181 | } ForcePassLinking; // Force link by creating a global definition. | |
182 | } | |
183 | ||
184 | #endif |