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/CallPrinter.h" |
22 | #include "llvm/Analysis/DomPrinter.h" |
23 | #include "llvm/Analysis/GlobalsModRef.h" |
24 | #include "llvm/Analysis/Passes.h" |
25 | #include "llvm/Analysis/PostDominators.h" |
26 | #include "llvm/Analysis/RegionPass.h" |
27 | #include "llvm/Analysis/RegionPrinter.h" |
28 | #include "llvm/Analysis/ScalarEvolution.h" |
29 | #include "llvm/Analysis/ScalarEvolutionAliasAnalysis.h" |
30 | #include "llvm/Analysis/ScopedNoAliasAA.h" |
31 | #include "llvm/Analysis/TargetLibraryInfo.h" |
32 | #include "llvm/Analysis/TypeBasedAliasAnalysis.h" |
33 | #include "llvm/CodeGen/Passes.h" |
34 | #include "llvm/IR/Function.h" |
35 | #include "llvm/IR/IRPrintingPasses.h" |
36 | #include "llvm/Support/Valgrind.h" |
37 | #include "llvm/Transforms/IPO.h" |
38 | #include "llvm/Transforms/IPO/AlwaysInliner.h" |
39 | #include "llvm/Transforms/InstCombine/InstCombine.h" |
40 | #include "llvm/Transforms/ObjCARC.h" |
41 | #include "llvm/Transforms/Scalar.h" |
42 | #include "llvm/Transforms/Scalar/GVN.h" |
43 | #include "llvm/Transforms/Scalar/Scalarizer.h" |
44 | #include "llvm/Transforms/Utils.h" |
45 | #include "llvm/Transforms/Utils/SymbolRewriter.h" |
46 | #include "llvm/Transforms/Vectorize/LoadStoreVectorizer.h" |
47 | #include <cstdlib> |
48 | |
49 | namespace { |
50 | struct ForcePassLinking { |
51 | ForcePassLinking() { |
52 | // We must reference the passes in such a way that compilers will not |
53 | // delete it all as dead code, even with whole program optimization, |
54 | // yet is effectively a NO-OP. As the compiler isn't smart enough |
55 | // to know that getenv() never returns -1, this will do the job. |
56 | // This is so that globals in the translation units where these functions |
57 | // are defined are forced to be initialized, populating various |
58 | // registries. |
59 | if (std::getenv(name: "bar") != (char*) -1) |
60 | return; |
61 | |
62 | (void)llvm::createAtomicExpandLegacyPass(); |
63 | (void) llvm::createBasicAAWrapperPass(); |
64 | (void) llvm::createSCEVAAWrapperPass(); |
65 | (void) llvm::createTypeBasedAAWrapperPass(); |
66 | (void) llvm::createScopedNoAliasAAWrapperPass(); |
67 | (void) llvm::createBreakCriticalEdgesPass(); |
68 | (void) llvm::createCallGraphDOTPrinterPass(); |
69 | (void) llvm::createCallGraphViewerPass(); |
70 | (void) llvm::createCFGSimplificationPass(); |
71 | (void) llvm::createStructurizeCFGPass(); |
72 | (void) llvm::createDeadArgEliminationPass(); |
73 | (void) llvm::createDeadCodeEliminationPass(); |
74 | (void) llvm::createDependenceAnalysisWrapperPass(); |
75 | (void) llvm::createDomOnlyPrinterWrapperPassPass(); |
76 | (void) llvm::createDomPrinterWrapperPassPass(); |
77 | (void) llvm::createDomOnlyViewerWrapperPassPass(); |
78 | (void) llvm::createDomViewerWrapperPassPass(); |
79 | (void) llvm::createAlwaysInlinerLegacyPass(); |
80 | (void) llvm::createGlobalsAAWrapperPass(); |
81 | (void) llvm::createInstSimplifyLegacyPass(); |
82 | (void) llvm::createInstructionCombiningPass(); |
83 | (void) llvm::createJMCInstrumenterPass(); |
84 | (void) llvm::createKCFIPass(); |
85 | (void) llvm::createLCSSAPass(); |
86 | (void) llvm::createLICMPass(); |
87 | (void) llvm::createLazyValueInfoPass(); |
88 | (void) llvm::createLoopExtractorPass(); |
89 | (void) llvm::createLoopSimplifyPass(); |
90 | (void) llvm::createLoopStrengthReducePass(); |
91 | (void) llvm::createLoopUnrollPass(); |
92 | (void) llvm::createLowerConstantIntrinsicsPass(); |
93 | (void) llvm::createLowerGlobalDtorsLegacyPass(); |
94 | (void) llvm::createLowerInvokePass(); |
95 | (void) llvm::createLowerSwitchPass(); |
96 | (void) llvm::createNaryReassociatePass(); |
97 | (void) llvm::createObjCARCContractPass(); |
98 | (void) llvm::createPromoteMemoryToRegisterPass(); |
99 | (void)llvm::createPostDomOnlyPrinterWrapperPassPass(); |
100 | (void)llvm::createPostDomPrinterWrapperPassPass(); |
101 | (void)llvm::createPostDomOnlyViewerWrapperPassPass(); |
102 | (void)llvm::createPostDomViewerWrapperPassPass(); |
103 | (void) llvm::createReassociatePass(); |
104 | (void) llvm::createRegionInfoPass(); |
105 | (void) llvm::createRegionOnlyPrinterPass(); |
106 | (void) llvm::createRegionOnlyViewerPass(); |
107 | (void) llvm::createRegionPrinterPass(); |
108 | (void) llvm::createRegionViewerPass(); |
109 | (void) llvm::createSafeStackPass(); |
110 | (void) llvm::createSROAPass(); |
111 | (void) llvm::createSingleLoopExtractorPass(); |
112 | (void) llvm::createTailCallEliminationPass(); |
113 | (void)llvm::createTLSVariableHoistPass(); |
114 | (void) llvm::createConstantHoistingPass(); |
115 | (void)llvm::createCodeGenPrepareLegacyPass(); |
116 | (void) llvm::createEarlyCSEPass(); |
117 | (void) llvm::createGVNPass(); |
118 | (void) llvm::createPostDomTree(); |
119 | (void) llvm::createMergeICmpsLegacyPass(); |
120 | (void) llvm::createExpandLargeDivRemPass(); |
121 | (void)llvm::createExpandMemCmpLegacyPass(); |
122 | (void) llvm::createExpandVectorPredicationPass(); |
123 | std::string buf; |
124 | llvm::raw_string_ostream os(buf); |
125 | (void) llvm::createPrintModulePass(OS&: os); |
126 | (void) llvm::createPrintFunctionPass(OS&: os); |
127 | (void) llvm::createSinkingPass(); |
128 | (void) llvm::createLowerAtomicPass(); |
129 | (void) llvm::createLoadStoreVectorizerPass(); |
130 | (void) llvm::createPartiallyInlineLibCallsPass(); |
131 | (void) llvm::createSeparateConstOffsetFromGEPPass(); |
132 | (void) llvm::createSpeculativeExecutionPass(); |
133 | (void) llvm::createSpeculativeExecutionIfHasBranchDivergencePass(); |
134 | (void) llvm::createStraightLineStrengthReducePass(); |
135 | (void)llvm::createScalarizeMaskedMemIntrinLegacyPass(); |
136 | (void) llvm::createHardwareLoopsLegacyPass(); |
137 | (void) llvm::createUnifyLoopExitsPass(); |
138 | (void) llvm::createFixIrreduciblePass(); |
139 | (void)llvm::createSelectOptimizePass(); |
140 | |
141 | (void)new llvm::ScalarEvolutionWrapperPass(); |
142 | llvm::Function::Create(Ty: nullptr, Linkage: llvm::GlobalValue::ExternalLinkage)->viewCFGOnly(); |
143 | llvm::RGPassManager RGM; |
144 | llvm::TargetLibraryInfoImpl TLII; |
145 | llvm::TargetLibraryInfo TLI(TLII); |
146 | llvm::AliasAnalysis AA(TLI); |
147 | llvm::BatchAAResults BAA(AA); |
148 | llvm::AliasSetTracker X(BAA); |
149 | X.add(Loc: llvm::MemoryLocation()); // for -print-alias-sets |
150 | (void) llvm::AreStatisticsEnabled(); |
151 | (void) llvm::sys::RunningOnValgrind(); |
152 | } |
153 | } ForcePassLinking; // Force link by creating a global definition. |
154 | } |
155 | |
156 | #endif |
157 |