150
|
1 //===- llvm/LinkAllPasses.h ------------ Reference All Passes ---*- C++ -*-===//
|
|
2 //
|
|
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
4 // See https://llvm.org/LICENSE.txt for license information.
|
|
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
6 //
|
|
7 //===----------------------------------------------------------------------===//
|
|
8 //
|
|
9 // This header file pulls in all transformation and analysis passes for tools
|
|
10 // like opt and bugpoint that need this functionality.
|
|
11 //
|
|
12 //===----------------------------------------------------------------------===//
|
|
13
|
|
14 #ifndef LLVM_LINKALLPASSES_H
|
|
15 #define LLVM_LINKALLPASSES_H
|
|
16
|
|
17 #include "llvm/ADT/Statistic.h"
|
|
18 #include "llvm/Analysis/AliasAnalysisEvaluator.h"
|
|
19 #include "llvm/Analysis/AliasSetTracker.h"
|
|
20 #include "llvm/Analysis/BasicAliasAnalysis.h"
|
|
21 #include "llvm/Analysis/CFLAndersAliasAnalysis.h"
|
|
22 #include "llvm/Analysis/CFLSteensAliasAnalysis.h"
|
|
23 #include "llvm/Analysis/CallPrinter.h"
|
|
24 #include "llvm/Analysis/DomPrinter.h"
|
|
25 #include "llvm/Analysis/GlobalsModRef.h"
|
|
26 #include "llvm/Analysis/IntervalPartition.h"
|
|
27 #include "llvm/Analysis/Lint.h"
|
|
28 #include "llvm/Analysis/Passes.h"
|
|
29 #include "llvm/Analysis/PostDominators.h"
|
|
30 #include "llvm/Analysis/RegionPass.h"
|
|
31 #include "llvm/Analysis/RegionPrinter.h"
|
|
32 #include "llvm/Analysis/ScalarEvolution.h"
|
|
33 #include "llvm/Analysis/ScalarEvolutionAliasAnalysis.h"
|
|
34 #include "llvm/Analysis/ScopedNoAliasAA.h"
|
|
35 #include "llvm/Analysis/TargetLibraryInfo.h"
|
|
36 #include "llvm/Analysis/TypeBasedAliasAnalysis.h"
|
|
37 #include "llvm/CodeGen/Passes.h"
|
|
38 #include "llvm/IR/Function.h"
|
|
39 #include "llvm/IR/IRPrintingPasses.h"
|
|
40 #include "llvm/Support/Valgrind.h"
|
|
41 #include "llvm/Transforms/AggressiveInstCombine/AggressiveInstCombine.h"
|
|
42 #include "llvm/Transforms/IPO.h"
|
|
43 #include "llvm/Transforms/IPO/AlwaysInliner.h"
|
|
44 #include "llvm/Transforms/IPO/Attributor.h"
|
|
45 #include "llvm/Transforms/IPO/FunctionAttrs.h"
|
|
46 #include "llvm/Transforms/InstCombine/InstCombine.h"
|
|
47 #include "llvm/Transforms/Instrumentation.h"
|
|
48 #include "llvm/Transforms/Instrumentation/BoundsChecking.h"
|
|
49 #include "llvm/Transforms/ObjCARC.h"
|
|
50 #include "llvm/Transforms/Scalar.h"
|
|
51 #include "llvm/Transforms/Scalar/GVN.h"
|
|
52 #include "llvm/Transforms/Scalar/InstSimplifyPass.h"
|
|
53 #include "llvm/Transforms/Scalar/Scalarizer.h"
|
|
54 #include "llvm/Transforms/Utils.h"
|
|
55 #include "llvm/Transforms/Utils/SymbolRewriter.h"
|
|
56 #include "llvm/Transforms/Utils/UnifyFunctionExitNodes.h"
|
|
57 #include "llvm/Transforms/Vectorize.h"
|
|
58 #include <cstdlib>
|
|
59
|
|
60 namespace {
|
|
61 struct ForcePassLinking {
|
|
62 ForcePassLinking() {
|
|
63 // We must reference the passes in such a way that compilers will not
|
|
64 // delete it all as dead code, even with whole program optimization,
|
|
65 // yet is effectively a NO-OP. As the compiler isn't smart enough
|
|
66 // to know that getenv() never returns -1, this will do the job.
|
|
67 if (std::getenv("bar") != (char*) -1)
|
|
68 return;
|
|
69
|
|
70 (void) llvm::createAAEvalPass();
|
|
71 (void) llvm::createAggressiveDCEPass();
|
|
72 (void) llvm::createAggressiveInstCombinerPass();
|
|
73 (void) llvm::createBitTrackingDCEPass();
|
|
74 (void) llvm::createOpenMPOptLegacyPass();
|
|
75 (void) llvm::createArgumentPromotionPass();
|
|
76 (void) llvm::createAlignmentFromAssumptionsPass();
|
|
77 (void) llvm::createBasicAAWrapperPass();
|
|
78 (void) llvm::createSCEVAAWrapperPass();
|
|
79 (void) llvm::createTypeBasedAAWrapperPass();
|
|
80 (void) llvm::createScopedNoAliasAAWrapperPass();
|
|
81 (void) llvm::createBoundsCheckingLegacyPass();
|
|
82 (void) llvm::createBreakCriticalEdgesPass();
|
|
83 (void) llvm::createCallGraphDOTPrinterPass();
|
|
84 (void) llvm::createCallGraphViewerPass();
|
|
85 (void) llvm::createCFGSimplificationPass();
|
|
86 (void) llvm::createCFLAndersAAWrapperPass();
|
|
87 (void) llvm::createCFLSteensAAWrapperPass();
|
|
88 (void) llvm::createStructurizeCFGPass();
|
|
89 (void) llvm::createLibCallsShrinkWrapPass();
|
|
90 (void) llvm::createCalledValuePropagationPass();
|
|
91 (void) llvm::createConstantMergePass();
|
|
92 (void) llvm::createConstantPropagationPass();
|
|
93 (void) llvm::createControlHeightReductionLegacyPass();
|
|
94 (void) llvm::createCostModelAnalysisPass();
|
|
95 (void) llvm::createDeadArgEliminationPass();
|
|
96 (void) llvm::createDeadCodeEliminationPass();
|
|
97 (void) llvm::createDeadInstEliminationPass();
|
|
98 (void) llvm::createDeadStoreEliminationPass();
|
|
99 (void) llvm::createDependenceAnalysisWrapperPass();
|
|
100 (void) llvm::createDomOnlyPrinterPass();
|
|
101 (void) llvm::createDomPrinterPass();
|
|
102 (void) llvm::createDomOnlyViewerPass();
|
|
103 (void) llvm::createDomViewerPass();
|
|
104 (void) llvm::createGCOVProfilerPass();
|
|
105 (void) llvm::createPGOInstrumentationGenLegacyPass();
|
|
106 (void) llvm::createPGOInstrumentationUseLegacyPass();
|
|
107 (void) llvm::createPGOInstrumentationGenCreateVarLegacyPass();
|
|
108 (void) llvm::createPGOIndirectCallPromotionLegacyPass();
|
|
109 (void) llvm::createPGOMemOPSizeOptLegacyPass();
|
|
110 (void) llvm::createInstrProfilingLegacyPass();
|
|
111 (void) llvm::createFunctionImportPass();
|
|
112 (void) llvm::createFunctionInliningPass();
|
|
113 (void) llvm::createAlwaysInlinerLegacyPass();
|
|
114 (void) llvm::createGlobalDCEPass();
|
|
115 (void) llvm::createGlobalOptimizerPass();
|
|
116 (void) llvm::createGlobalsAAWrapperPass();
|
|
117 (void) llvm::createGuardWideningPass();
|
|
118 (void) llvm::createLoopGuardWideningPass();
|
|
119 (void) llvm::createIPConstantPropagationPass();
|
|
120 (void) llvm::createIPSCCPPass();
|
|
121 (void) llvm::createInductiveRangeCheckEliminationPass();
|
|
122 (void) llvm::createIndVarSimplifyPass();
|
|
123 (void) llvm::createInstSimplifyLegacyPass();
|
|
124 (void) llvm::createInstructionCombiningPass();
|
|
125 (void) llvm::createInternalizePass();
|
|
126 (void) llvm::createLCSSAPass();
|
|
127 (void) llvm::createLegacyDivergenceAnalysisPass();
|
|
128 (void) llvm::createLICMPass();
|
|
129 (void) llvm::createLoopSinkPass();
|
|
130 (void) llvm::createLazyValueInfoPass();
|
|
131 (void) llvm::createLoopExtractorPass();
|
|
132 (void) llvm::createLoopInterchangePass();
|
|
133 (void) llvm::createLoopPredicationPass();
|
|
134 (void) llvm::createLoopSimplifyPass();
|
|
135 (void) llvm::createLoopSimplifyCFGPass();
|
|
136 (void) llvm::createLoopStrengthReducePass();
|
|
137 (void) llvm::createLoopRerollPass();
|
|
138 (void) llvm::createLoopUnrollPass();
|
|
139 (void) llvm::createLoopUnrollAndJamPass();
|
|
140 (void) llvm::createLoopUnswitchPass();
|
|
141 (void) llvm::createLoopVersioningLICMPass();
|
|
142 (void) llvm::createLoopIdiomPass();
|
|
143 (void) llvm::createLoopRotatePass();
|
|
144 (void) llvm::createLowerConstantIntrinsicsPass();
|
|
145 (void) llvm::createLowerExpectIntrinsicPass();
|
|
146 (void) llvm::createLowerInvokePass();
|
|
147 (void) llvm::createLowerSwitchPass();
|
|
148 (void) llvm::createNaryReassociatePass();
|
|
149 (void) llvm::createObjCARCAAWrapperPass();
|
|
150 (void) llvm::createObjCARCAPElimPass();
|
|
151 (void) llvm::createObjCARCExpandPass();
|
|
152 (void) llvm::createObjCARCContractPass();
|
|
153 (void) llvm::createObjCARCOptPass();
|
|
154 (void) llvm::createPAEvalPass();
|
|
155 (void) llvm::createPromoteMemoryToRegisterPass();
|
|
156 (void) llvm::createDemoteRegisterToMemoryPass();
|
|
157 (void) llvm::createPruneEHPass();
|
|
158 (void) llvm::createPostDomOnlyPrinterPass();
|
|
159 (void) llvm::createPostDomPrinterPass();
|
|
160 (void) llvm::createPostDomOnlyViewerPass();
|
|
161 (void) llvm::createPostDomViewerPass();
|
|
162 (void) llvm::createReassociatePass();
|
|
163 (void) llvm::createRedundantDbgInstEliminationPass();
|
|
164 (void) llvm::createRegionInfoPass();
|
|
165 (void) llvm::createRegionOnlyPrinterPass();
|
|
166 (void) llvm::createRegionOnlyViewerPass();
|
|
167 (void) llvm::createRegionPrinterPass();
|
|
168 (void) llvm::createRegionViewerPass();
|
|
169 (void) llvm::createSCCPPass();
|
|
170 (void) llvm::createSafeStackPass();
|
|
171 (void) llvm::createSROAPass();
|
|
172 (void) llvm::createSingleLoopExtractorPass();
|
|
173 (void) llvm::createStripSymbolsPass();
|
|
174 (void) llvm::createStripNonDebugSymbolsPass();
|
|
175 (void) llvm::createStripDeadDebugInfoPass();
|
|
176 (void) llvm::createStripDeadPrototypesPass();
|
152
|
177 #ifndef noCbC
|
|
178 (void) llvm::createTailCallEliminationPass(false);
|
|
179 #else
|
150
|
180 (void) llvm::createTailCallEliminationPass();
|
152
|
181 #endif
|
150
|
182 (void) llvm::createJumpThreadingPass();
|
|
183 (void) llvm::createUnifyFunctionExitNodesPass();
|
|
184 (void) llvm::createInstCountPass();
|
|
185 (void) llvm::createConstantHoistingPass();
|
|
186 (void) llvm::createCodeGenPreparePass();
|
|
187 (void) llvm::createEntryExitInstrumenterPass();
|
|
188 (void) llvm::createPostInlineEntryExitInstrumenterPass();
|
|
189 (void) llvm::createEarlyCSEPass();
|
|
190 (void) llvm::createGVNHoistPass();
|
|
191 (void) llvm::createMergedLoadStoreMotionPass();
|
|
192 (void) llvm::createGVNPass();
|
|
193 (void) llvm::createNewGVNPass();
|
|
194 (void) llvm::createMemCpyOptPass();
|
|
195 (void) llvm::createLoopDeletionPass();
|
|
196 (void) llvm::createPostDomTree();
|
|
197 (void) llvm::createInstructionNamerPass();
|
|
198 (void) llvm::createMetaRenamerPass();
|
|
199 (void) llvm::createAttributorLegacyPass();
|
|
200 (void) llvm::createAttributorCGSCCLegacyPass();
|
|
201 (void) llvm::createPostOrderFunctionAttrsLegacyPass();
|
|
202 (void) llvm::createReversePostOrderFunctionAttrsPass();
|
|
203 (void) llvm::createMergeFunctionsPass();
|
|
204 (void) llvm::createMergeICmpsLegacyPass();
|
|
205 (void) llvm::createExpandMemCmpPass();
|
|
206 std::string buf;
|
|
207 llvm::raw_string_ostream os(buf);
|
|
208 (void) llvm::createPrintModulePass(os);
|
|
209 (void) llvm::createPrintFunctionPass(os);
|
|
210 (void) llvm::createModuleDebugInfoPrinterPass();
|
|
211 (void) llvm::createPartialInliningPass();
|
|
212 (void) llvm::createLintPass();
|
|
213 (void) llvm::createSinkingPass();
|
|
214 (void) llvm::createLowerAtomicPass();
|
|
215 (void) llvm::createCorrelatedValuePropagationPass();
|
|
216 (void) llvm::createMemDepPrinter();
|
|
217 (void) llvm::createLoopVectorizePass();
|
|
218 (void) llvm::createSLPVectorizerPass();
|
|
219 (void) llvm::createLoadStoreVectorizerPass();
|
|
220 (void) llvm::createVectorCombinePass();
|
|
221 (void) llvm::createPartiallyInlineLibCallsPass();
|
|
222 (void) llvm::createScalarizerPass();
|
|
223 (void) llvm::createSeparateConstOffsetFromGEPPass();
|
|
224 (void) llvm::createSpeculativeExecutionPass();
|
|
225 (void) llvm::createSpeculativeExecutionIfHasBranchDivergencePass();
|
|
226 (void) llvm::createRewriteSymbolsPass();
|
|
227 (void) llvm::createStraightLineStrengthReducePass();
|
|
228 (void) llvm::createMemDerefPrinter();
|
|
229 (void) llvm::createMustExecutePrinter();
|
|
230 (void) llvm::createMustBeExecutedContextPrinter();
|
|
231 (void) llvm::createFloat2IntPass();
|
|
232 (void) llvm::createEliminateAvailableExternallyPass();
|
|
233 (void) llvm::createScalarizeMaskedMemIntrinPass();
|
|
234 (void) llvm::createWarnMissedTransformationsPass();
|
|
235 (void) llvm::createHardwareLoopsPass();
|
|
236 (void)llvm::createInjectTLIMappingsLegacyPass();
|
|
237
|
|
238 (void)new llvm::IntervalPartition();
|
|
239 (void)new llvm::ScalarEvolutionWrapperPass();
|
|
240 llvm::Function::Create(nullptr, llvm::GlobalValue::ExternalLinkage)->viewCFGOnly();
|
|
241 llvm::RGPassManager RGM;
|
|
242 llvm::TargetLibraryInfoImpl TLII;
|
|
243 llvm::TargetLibraryInfo TLI(TLII);
|
|
244 llvm::AliasAnalysis AA(TLI);
|
|
245 llvm::AliasSetTracker X(AA);
|
|
246 X.add(nullptr, llvm::LocationSize::unknown(),
|
|
247 llvm::AAMDNodes()); // for -print-alias-sets
|
|
248 (void) llvm::AreStatisticsEnabled();
|
|
249 (void) llvm::sys::RunningOnValgrind();
|
|
250 }
|
|
251 } ForcePassLinking; // Force link by creating a global definition.
|
|
252 }
|
|
253
|
|
254 #endif
|