Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
14 pmbaty 1
//===- MachinePassRegistry.def - Registry of 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 file is used as the registry of passes that are for target-independent
10
// code generator.
11
//
12
//===----------------------------------------------------------------------===//
13
 
14
// NOTE: NO INCLUDE GUARD DESIRED!
15
 
16
#ifndef MODULE_ANALYSIS
17
#define MODULE_ANALYSIS(NAME, PASS_NAME, CONSTRUCTOR)
18
#endif
19
MODULE_ANALYSIS("pass-instrumentation", PassInstrumentationAnalysis, (PIC))
20
#undef MODULE_ANALYSIS
21
 
22
#ifndef MODULE_PASS
23
#define MODULE_PASS(NAME, PASS_NAME, CONSTRUCTOR)
24
#endif
25
MODULE_PASS("pre-isel-intrinsic-lowering", PreISelIntrinsicLoweringPass, ())
26
#undef MODULE_PASS
27
 
28
#ifndef FUNCTION_ANALYSIS
29
#define FUNCTION_ANALYSIS(NAME, PASS_NAME, CONSTRUCTOR)
30
#endif
31
FUNCTION_ANALYSIS("pass-instrumentation", PassInstrumentationAnalysis, (PIC))
32
FUNCTION_ANALYSIS("targetir", TargetIRAnalysis, (std::move(TM.getTargetIRAnalysis())))
33
#undef FUNCTION_ANALYSIS
34
 
35
#ifndef FUNCTION_PASS
36
#define FUNCTION_PASS(NAME, PASS_NAME, CONSTRUCTOR)
37
#endif
38
FUNCTION_PASS("mergeicmps", MergeICmpsPass, ())
39
FUNCTION_PASS("lower-constant-intrinsics", LowerConstantIntrinsicsPass, ())
40
FUNCTION_PASS("unreachableblockelim", UnreachableBlockElimPass, ())
41
FUNCTION_PASS("consthoist", ConstantHoistingPass, ())
42
FUNCTION_PASS("replace-with-veclib", ReplaceWithVeclib, ())
43
FUNCTION_PASS("partially-inline-libcalls", PartiallyInlineLibCallsPass, ())
44
FUNCTION_PASS("ee-instrument", EntryExitInstrumenterPass, (false))
45
FUNCTION_PASS("post-inline-ee-instrument", EntryExitInstrumenterPass, (true))
46
FUNCTION_PASS("expand-large-div-rem", ExpandLargeDivRemPass, ())
47
FUNCTION_PASS("expand-large-fp-convert", ExpandLargeFpConvertPass, ())
48
FUNCTION_PASS("expand-reductions", ExpandReductionsPass, ())
49
FUNCTION_PASS("expandvp", ExpandVectorPredicationPass, ())
50
FUNCTION_PASS("lowerinvoke", LowerInvokePass, ())
51
FUNCTION_PASS("scalarize-masked-mem-intrin", ScalarizeMaskedMemIntrinPass, ())
52
FUNCTION_PASS("tlshoist", TLSVariableHoistPass, ())
53
FUNCTION_PASS("verify", VerifierPass, ())
54
#undef FUNCTION_PASS
55
 
56
#ifndef LOOP_PASS
57
#define LOOP_PASS(NAME, PASS_NAME, CONSTRUCTOR)
58
#endif
59
LOOP_PASS("loop-reduce", LoopStrengthReducePass, ())
60
#undef LOOP_PASS
61
 
62
#ifndef MACHINE_MODULE_PASS
63
#define MACHINE_MODULE_PASS(NAME, PASS_NAME, CONSTRUCTOR)
64
#endif
65
#undef MACHINE_MODULE_PASS
66
 
67
#ifndef MACHINE_FUNCTION_ANALYSIS
68
#define MACHINE_FUNCTION_ANALYSIS(NAME, PASS_NAME, CONSTRUCTOR)
69
#endif
70
MACHINE_FUNCTION_ANALYSIS("pass-instrumentation", PassInstrumentationAnalysis, (PIC))
71
// LiveVariables currently requires pure SSA form.
72
// FIXME: Once TwoAddressInstruction pass no longer uses kill flags,
73
// LiveVariables can be removed completely, and LiveIntervals can be directly
74
// computed. (We still either need to regenerate kill flags after regalloc, or
75
// preferably fix the scavenger to not depend on them).
76
// MACHINE_FUNCTION_ANALYSIS("live-vars", LiveVariablesAnalysis())
77
 
78
// MACHINE_FUNCTION_ANALYSIS("live-stacks", LiveStacksPass())
79
// MACHINE_FUNCTION_ANALYSIS("slot-indexes", SlotIndexesAnalysis())
80
// MACHINE_FUNCTION_ANALYSIS("edge-bundles", EdgeBundlesAnalysis())
81
// MACHINE_FUNCTION_ANALYSIS("lazy-machine-bfi", LazyMachineBlockFrequencyInfoAnalysis())
82
// MACHINE_FUNCTION_ANALYSIS("machine-bfi", MachineBlockFrequencyInfoAnalysis())
83
// MACHINE_FUNCTION_ANALYSIS("machine-loops", MachineLoopInfoAnalysis())
84
// MACHINE_FUNCTION_ANALYSIS("machine-dom-frontier", MachineDominanceFrontierAnalysis())
85
// MACHINE_FUNCTION_ANALYSIS("machine-dom-tree", MachineDominatorTreeAnalysis())
86
// MACHINE_FUNCTION_ANALYSIS("machine-ore", MachineOptimizationRemarkEmitterPassAnalysis())
87
// MACHINE_FUNCTION_ANALYSIS("machine-post-dom-tree", MachinePostDominatorTreeAnalysis())
88
// MACHINE_FUNCTION_ANALYSIS("machine-region-info", MachineRegionInfoPassAnalysis())
89
// MACHINE_FUNCTION_ANALYSIS("machine-trace-metrics", MachineTraceMetricsAnalysis())
90
// MACHINE_FUNCTION_ANALYSIS("reaching-def", ReachingDefAnalysisAnalysis())
91
// MACHINE_FUNCTION_ANALYSIS("live-reg-matrix", LiveRegMatrixAnalysis())
92
// MACHINE_FUNCTION_ANALYSIS("gc-analysis", GCMachineCodeAnalysisPass())
93
#undef MACHINE_FUNCTION_ANALYSIS
94
 
95
#ifndef MACHINE_FUNCTION_PASS
96
#define MACHINE_FUNCTION_PASS(NAME, PASS_NAME, CONSTRUCTOR)
97
#endif
98
// MACHINE_FUNCTION_PASS("mir-printer", PrintMIRPass, ())
99
// MACHINE_FUNCTION_PASS("free-machine-function", FreeMachineFunctionPass, ())
100
#undef MACHINE_FUNCTION_PASS
101
 
102
// After a pass is converted to new pass manager, its entry should be moved from
103
// dummy table to the normal one. For example, for a machine function pass,
104
// DUMMY_MACHINE_FUNCTION_PASS to MACHINE_FUNCTION_PASS.
105
 
106
#ifndef DUMMY_FUNCTION_PASS
107
#define DUMMY_FUNCTION_PASS(NAME, PASS_NAME, CONSTRUCTOR)
108
#endif
109
DUMMY_FUNCTION_PASS("expandmemcmp", ExpandMemCmpPass, ())
110
DUMMY_FUNCTION_PASS("gc-lowering", GCLoweringPass, ())
111
DUMMY_FUNCTION_PASS("shadow-stack-gc-lowering", ShadowStackGCLoweringPass, ())
112
DUMMY_FUNCTION_PASS("sjljehprepare", SjLjEHPreparePass, ())
113
DUMMY_FUNCTION_PASS("dwarfehprepare", DwarfEHPass, ())
114
DUMMY_FUNCTION_PASS("winehprepare", WinEHPass, ())
115
DUMMY_FUNCTION_PASS("wasmehprepare", WasmEHPass, ())
116
DUMMY_FUNCTION_PASS("codegenprepare", CodeGenPreparePass, ())
117
DUMMY_FUNCTION_PASS("safe-stack", SafeStackPass, ())
118
DUMMY_FUNCTION_PASS("stack-protector", StackProtectorPass, ())
119
DUMMY_FUNCTION_PASS("atomic-expand", AtomicExpandPass, ())
120
DUMMY_FUNCTION_PASS("interleaved-access", InterleavedAccessPass, ())
121
DUMMY_FUNCTION_PASS("indirectbr-expand", IndirectBrExpandPass, ())
122
DUMMY_FUNCTION_PASS("cfguard-dispatch", CFGuardDispatchPass, ())
123
DUMMY_FUNCTION_PASS("cfguard-check", CFGuardCheckPass, ())
124
DUMMY_FUNCTION_PASS("gc-info-printer", GCInfoPrinterPass, ())
125
DUMMY_FUNCTION_PASS("select-optimize", SelectOptimizePass, ())
126
#undef DUMMY_FUNCTION_PASS
127
 
128
#ifndef DUMMY_MODULE_PASS
129
#define DUMMY_MODULE_PASS(NAME, PASS_NAME, CONSTRUCTOR)
130
#endif
131
DUMMY_MODULE_PASS("lower-emutls", LowerEmuTLSPass, ())
132
#undef DUMMY_MODULE_PASS
133
 
134
#ifndef DUMMY_MACHINE_MODULE_PASS
135
#define DUMMY_MACHINE_MODULE_PASS(NAME, PASS_NAME, CONSTRUCTOR)
136
#endif
137
DUMMY_MACHINE_MODULE_PASS("machine-outliner", MachineOutlinerPass, ())
138
#undef DUMMY_MACHINE_MODULE_PASS
139
 
140
#ifndef DUMMY_MACHINE_FUNCTION_PASS
141
#define DUMMY_MACHINE_FUNCTION_PASS(NAME, PASS_NAME, CONSTRUCTOR)
142
#endif
143
DUMMY_MACHINE_FUNCTION_PASS("mir-printer", PrintMIRPass, ())
144
DUMMY_MACHINE_FUNCTION_PASS("free-machine-function", FreeMachineFunctionPass, ())
145
DUMMY_MACHINE_FUNCTION_PASS("finalize-isel", FinalizeISelPass, ())
146
DUMMY_MACHINE_FUNCTION_PASS("localstackalloc", LocalStackSlotPass, ())
147
DUMMY_MACHINE_FUNCTION_PASS("shrink-wrap", ShrinkWrapPass, ())
148
DUMMY_MACHINE_FUNCTION_PASS("prologepilog", PrologEpilogInserterPass, ())
149
DUMMY_MACHINE_FUNCTION_PASS("postrapseudos", ExpandPostRAPseudosPass, ())
150
DUMMY_MACHINE_FUNCTION_PASS("implicit-null-checks", ImplicitNullChecksPass, ())
151
DUMMY_MACHINE_FUNCTION_PASS("postmisched", PostMachineSchedulerPass, ())
152
DUMMY_MACHINE_FUNCTION_PASS("machine-scheduler", MachineSchedulerPass, ())
153
DUMMY_MACHINE_FUNCTION_PASS("machine-cp", MachineCopyPropagationPass, ())
154
DUMMY_MACHINE_FUNCTION_PASS("machine-latecleanup", MachineLateInstrsCleanupPass, ())
155
DUMMY_MACHINE_FUNCTION_PASS("post-RA-sched", PostRASchedulerPass, ())
156
DUMMY_MACHINE_FUNCTION_PASS("fentry-insert", FEntryInserterPass, ())
157
DUMMY_MACHINE_FUNCTION_PASS("xray-instrumentation", XRayInstrumentationPass, ())
158
DUMMY_MACHINE_FUNCTION_PASS("patchable-function", PatchableFunctionPass, ())
159
DUMMY_MACHINE_FUNCTION_PASS("reg-usage-propagation", RegUsageInfoPropagationPass, ())
160
DUMMY_MACHINE_FUNCTION_PASS("reg-usage-collector", RegUsageInfoCollectorPass, ())
161
DUMMY_MACHINE_FUNCTION_PASS("funclet-layout", FuncletLayoutPass, ())
162
DUMMY_MACHINE_FUNCTION_PASS("stackmap-liveness", StackMapLivenessPass, ())
163
DUMMY_MACHINE_FUNCTION_PASS("removeredundantdebugvalues", RemoveRedundantDebugValuesPass, ())
164
DUMMY_MACHINE_FUNCTION_PASS("dot-machine-cfg", MachineCFGPrinter, ())
165
DUMMY_MACHINE_FUNCTION_PASS("livedebugvalues", LiveDebugValuesPass, ())
166
DUMMY_MACHINE_FUNCTION_PASS("early-tailduplication", EarlyTailDuplicatePass, ())
167
DUMMY_MACHINE_FUNCTION_PASS("opt-phis", OptimizePHIsPass, ())
168
DUMMY_MACHINE_FUNCTION_PASS("stack-coloring", StackColoringPass, ())
169
DUMMY_MACHINE_FUNCTION_PASS("dead-mi-elimination", DeadMachineInstructionElimPass, ())
170
DUMMY_MACHINE_FUNCTION_PASS("early-machinelicm", EarlyMachineLICMPass, ())
171
DUMMY_MACHINE_FUNCTION_PASS("machinelicm", MachineLICMPass, ())
172
DUMMY_MACHINE_FUNCTION_PASS("machine-cse", MachineCSEPass, ())
173
DUMMY_MACHINE_FUNCTION_PASS("machine-sink", MachineSinkingPass, ())
174
DUMMY_MACHINE_FUNCTION_PASS("postra-machine-sink", PostRAMachineSinkingPass, ())
175
DUMMY_MACHINE_FUNCTION_PASS("peephole-opt", PeepholeOptimizerPass, ())
176
DUMMY_MACHINE_FUNCTION_PASS("regalloc", RegAllocPass, ())
177
DUMMY_MACHINE_FUNCTION_PASS("virtregrewriter", VirtRegRewriterPass, ())
178
DUMMY_MACHINE_FUNCTION_PASS("stack-slot-coloring", StackSlotColoringPass, ())
179
DUMMY_MACHINE_FUNCTION_PASS("phi-node-elimination", PHIEliminationPass, ())
180
DUMMY_MACHINE_FUNCTION_PASS("twoaddressinstruction", TwoAddressInstructionPass, ())
181
DUMMY_MACHINE_FUNCTION_PASS("detect-dead-lanes", DetectDeadLanesPass, ())
182
DUMMY_MACHINE_FUNCTION_PASS("processimpdefs", ProcessImplicitDefsPass, ())
183
DUMMY_MACHINE_FUNCTION_PASS("liveintervals", LiveIntervalsPass, ())
184
DUMMY_MACHINE_FUNCTION_PASS("simple-register-coalescing", RegisterCoalescerPass, ())
185
DUMMY_MACHINE_FUNCTION_PASS("rename-independent-subregs", RenameIndependentSubregsPass, ())
186
DUMMY_MACHINE_FUNCTION_PASS("branch-folder", BranchFolderPass, ())
187
DUMMY_MACHINE_FUNCTION_PASS("tailduplication", TailDuplicatePass, ())
188
DUMMY_MACHINE_FUNCTION_PASS("block-placement", MachineBlockPlacementPass, ())
189
DUMMY_MACHINE_FUNCTION_PASS("block-placement-stats", MachineBlockPlacementStatsPass, ())
190
DUMMY_MACHINE_FUNCTION_PASS("early-ifcvt", EarlyIfConverterPass, ())
191
DUMMY_MACHINE_FUNCTION_PASS("machine-combiner", MachineCombinerPass, ())
192
DUMMY_MACHINE_FUNCTION_PASS("lrshrink", LiveRangeShrinkPass, ())
193
DUMMY_MACHINE_FUNCTION_PASS("break-false-deps", BreakFalseDepsPass, ())
194
DUMMY_MACHINE_FUNCTION_PASS("cfi-instr-inserter", CFIInstrInserterPass, ())
195
DUMMY_MACHINE_FUNCTION_PASS("cfguard-longjmp", CFGuardLongjmpPass, ())
196
DUMMY_MACHINE_FUNCTION_PASS("ra-basic", RABasicPass, ())
197
DUMMY_MACHINE_FUNCTION_PASS("ra-fast", RAFastPass, ())
198
DUMMY_MACHINE_FUNCTION_PASS("ra-greedy", RAGreedyPass, ())
199
DUMMY_MACHINE_FUNCTION_PASS("ra-pbqp", RAPBQPPass, ())
200
DUMMY_MACHINE_FUNCTION_PASS("legalizer", LegalizerPass, ())
201
DUMMY_MACHINE_FUNCTION_PASS("irtranslator", IRTranslatorPass, ())
202
DUMMY_MACHINE_FUNCTION_PASS("regbankselect", RegBankSelectPass, ())
203
DUMMY_MACHINE_FUNCTION_PASS("instruction-select", InstructionSelectPass, ())
204
DUMMY_MACHINE_FUNCTION_PASS("reset-machine-function", ResetMachineFunctionPass, ())
205
DUMMY_MACHINE_FUNCTION_PASS("machineverifier", MachineVerifierPass, ())
206
DUMMY_MACHINE_FUNCTION_PASS("print-machine-cycles", MachineCycleInfoPrinterPass, ())
207
DUMMY_MACHINE_FUNCTION_PASS("machine-sanmd", MachineSanitizerBinaryMetadata, ())
208
DUMMY_MACHINE_FUNCTION_PASS("machine-uniformity", MachineUniformityInfoWrapperPass, ())
209
DUMMY_MACHINE_FUNCTION_PASS("print-machine-uniformity", MachineUniformityInfoPrinterPass, ())
210
#undef DUMMY_MACHINE_FUNCTION_PASS