xref: /src/contrib/llvm-project/llvm/lib/CodeGen/CodeGen.cpp (revision 0fca6ea1d4eea4c934cfff25ac9ee8ad6fe95583)
1cf099d11SDimitry Andric //===-- CodeGen.cpp -------------------------------------------------------===//
2cf099d11SDimitry Andric //
3e6d15924SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4e6d15924SDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
5e6d15924SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6cf099d11SDimitry Andric //
7cf099d11SDimitry Andric //===----------------------------------------------------------------------===//
8cf099d11SDimitry Andric //
9cf099d11SDimitry Andric // This file implements the common initialization routines for the
10cf099d11SDimitry Andric // CodeGen library.
11cf099d11SDimitry Andric //
12cf099d11SDimitry Andric //===----------------------------------------------------------------------===//
13cf099d11SDimitry Andric 
147ab83427SDimitry Andric #include "llvm/InitializePasses.h"
155ca98fd9SDimitry Andric #include "llvm/PassRegistry.h"
16cf099d11SDimitry Andric 
17cf099d11SDimitry Andric using namespace llvm;
18cf099d11SDimitry Andric 
19cf099d11SDimitry Andric /// initializeCodeGen - Initialize all passes linked into the CodeGen library.
initializeCodeGen(PassRegistry & Registry)20cf099d11SDimitry Andric void llvm::initializeCodeGen(PassRegistry &Registry) {
21e3b55780SDimitry Andric   initializeAssignmentTrackingAnalysisPass(Registry);
22ac9a064cSDimitry Andric   initializeAtomicExpandLegacyPass(Registry);
23b1c73532SDimitry Andric   initializeBasicBlockPathCloningPass(Registry);
24b60736ecSDimitry Andric   initializeBasicBlockSectionsPass(Registry);
2563faed5bSDimitry Andric   initializeBranchFolderPassPass(Registry);
26b915e9e0SDimitry Andric   initializeBranchRelaxationPass(Registry);
277fa27ce4SDimitry Andric   initializeBreakFalseDepsPass(Registry);
287fa27ce4SDimitry Andric   initializeCallBrPreparePass(Registry);
29706b4fc4SDimitry Andric   initializeCFGuardLongjmpPass(Registry);
30145449b1SDimitry Andric   initializeCFIFixupPass(Registry);
31eb11fae6SDimitry Andric   initializeCFIInstrInserterPass(Registry);
32b60736ecSDimitry Andric   initializeCheckDebugMachineModulePass(Registry);
33aca2e42cSDimitry Andric   initializeCodeGenPrepareLegacyPassPass(Registry);
34cf099d11SDimitry Andric   initializeDeadMachineInstructionElimPass(Registry);
35cfca06d7SDimitry Andric   initializeDebugifyMachineModulePass(Registry);
3601095a5dSDimitry Andric   initializeDetectDeadLanesPass(Registry);
37b60736ecSDimitry Andric   initializeDwarfEHPrepareLegacyPassPass(Registry);
3858b69754SDimitry Andric   initializeEarlyIfConverterPass(Registry);
391d5ae102SDimitry Andric   initializeEarlyIfPredicatorPass(Registry);
40eb11fae6SDimitry Andric   initializeEarlyMachineLICMPass(Registry);
41eb11fae6SDimitry Andric   initializeEarlyTailDuplicatePass(Registry);
42e3b55780SDimitry Andric   initializeExpandLargeDivRemLegacyPassPass(Registry);
43e3b55780SDimitry Andric   initializeExpandLargeFpConvertLegacyPassPass(Registry);
44312c0ed1SDimitry Andric   initializeExpandMemCmpLegacyPassPass(Registry);
455a5ac124SDimitry Andric   initializeExpandPostRAPass(Registry);
4671d5a254SDimitry Andric   initializeFEntryInserterPass(Registry);
47e6d15924SDimitry Andric   initializeFinalizeISelPass(Registry);
4863faed5bSDimitry Andric   initializeFinalizeMachineBundlesPass(Registry);
49cfca06d7SDimitry Andric   initializeFixupStatepointCallerSavedPass(Registry);
50dd58ef01SDimitry Andric   initializeFuncletLayoutPass(Registry);
5163faed5bSDimitry Andric   initializeGCMachineCodeAnalysisPass(Registry);
52cf099d11SDimitry Andric   initializeGCModuleInfoPass(Registry);
537fa27ce4SDimitry Andric   initializeHardwareLoopsLegacyPass(Registry);
54cf099d11SDimitry Andric   initializeIfConverterPass(Registry);
5571d5a254SDimitry Andric   initializeImplicitNullChecksPass(Registry);
56312c0ed1SDimitry Andric   initializeIndirectBrExpandLegacyPassPass(Registry);
57ac9a064cSDimitry Andric   initializeInitUndefPass(Registry);
58d8e91e46SDimitry Andric   initializeInterleavedLoadCombinePass(Registry);
5901095a5dSDimitry Andric   initializeInterleavedAccessPass(Registry);
60145449b1SDimitry Andric   initializeJMCInstrumenterPass(Registry);
6171d5a254SDimitry Andric   initializeLiveDebugValuesPass(Registry);
62cf099d11SDimitry Andric   initializeLiveDebugVariablesPass(Registry);
63ac9a064cSDimitry Andric   initializeLiveIntervalsWrapperPassPass(Registry);
64f382538dSDimitry Andric   initializeLiveRangeShrinkPass(Registry);
65cf099d11SDimitry Andric   initializeLiveStacksPass(Registry);
66ac9a064cSDimitry Andric   initializeLiveVariablesWrapperPassPass(Registry);
6763faed5bSDimitry Andric   initializeLocalStackSlotPassPass(Registry);
68145449b1SDimitry Andric   initializeLowerGlobalDtorsLegacyPassPass(Registry);
695a5ac124SDimitry Andric   initializeLowerIntrinsicsPass(Registry);
70f65dcba8SDimitry Andric   initializeMIRAddFSDiscriminatorsPass(Registry);
71eb11fae6SDimitry Andric   initializeMIRCanonicalizerPass(Registry);
721d5ae102SDimitry Andric   initializeMIRNamerPass(Registry);
73f65dcba8SDimitry Andric   initializeMIRProfileLoaderPassPass(Registry);
74ac9a064cSDimitry Andric   initializeMachineBlockFrequencyInfoWrapperPassPass(Registry);
7563faed5bSDimitry Andric   initializeMachineBlockPlacementPass(Registry);
7663faed5bSDimitry Andric   initializeMachineBlockPlacementStatsPass(Registry);
77e3b55780SDimitry Andric   initializeMachineCFGPrinterPass(Registry);
78cf099d11SDimitry Andric   initializeMachineCSEPass(Registry);
795a5ac124SDimitry Andric   initializeMachineCombinerPass(Registry);
805a5ac124SDimitry Andric   initializeMachineCopyPropagationPass(Registry);
8177fc4c14SDimitry Andric   initializeMachineCycleInfoPrinterPassPass(Registry);
8277fc4c14SDimitry Andric   initializeMachineCycleInfoWrapperPassPass(Registry);
83ac9a064cSDimitry Andric   initializeMachineDominatorTreeWrapperPassPass(Registry);
845a5ac124SDimitry Andric   initializeMachineFunctionPrinterPassPass(Registry);
85e3b55780SDimitry Andric   initializeMachineLateInstrsCleanupPass(Registry);
86cf099d11SDimitry Andric   initializeMachineLICMPass(Registry);
87ac9a064cSDimitry Andric   initializeMachineLoopInfoWrapperPassPass(Registry);
881d5ae102SDimitry Andric   initializeMachineModuleInfoWrapperPassPass(Registry);
8971d5a254SDimitry Andric   initializeMachineOptimizationRemarkEmitterPassPass(Registry);
9071d5a254SDimitry Andric   initializeMachineOutlinerPass(Registry);
91b915e9e0SDimitry Andric   initializeMachinePipelinerPass(Registry);
92e3b55780SDimitry Andric   initializeMachineSanitizerBinaryMetadataPass(Registry);
931d5ae102SDimitry Andric   initializeModuloScheduleTestPass(Registry);
94ac9a064cSDimitry Andric   initializeMachinePostDominatorTreeWrapperPassPass(Registry);
9571d5a254SDimitry Andric   initializeMachineRegionInfoPassPass(Registry);
9663faed5bSDimitry Andric   initializeMachineSchedulerPass(Registry);
97cf099d11SDimitry Andric   initializeMachineSinkingPass(Registry);
98e3b55780SDimitry Andric   initializeMachineUniformityAnalysisPassPass(Registry);
99e3b55780SDimitry Andric   initializeMachineUniformityInfoPrinterPassPass(Registry);
100ac9a064cSDimitry Andric   initializeMachineVerifierLegacyPassPass(Registry);
101e3b55780SDimitry Andric   initializeObjCARCContractLegacyPassPass(Registry);
102cf099d11SDimitry Andric   initializeOptimizePHIsPass(Registry);
1035a5ac124SDimitry Andric   initializePEIPass(Registry);
104cf099d11SDimitry Andric   initializePHIEliminationPass(Registry);
10571d5a254SDimitry Andric   initializePatchableFunctionPass(Registry);
106cf099d11SDimitry Andric   initializePeepholeOptimizerPass(Registry);
1075ca98fd9SDimitry Andric   initializePostMachineSchedulerPass(Registry);
10801095a5dSDimitry Andric   initializePostRAHazardRecognizerPass(Registry);
109eb11fae6SDimitry Andric   initializePostRAMachineSinkingPass(Registry);
11063faed5bSDimitry Andric   initializePostRASchedulerPass(Registry);
11101095a5dSDimitry Andric   initializePreISelIntrinsicLoweringLegacyPassPass(Registry);
112cf099d11SDimitry Andric   initializeProcessImplicitDefsPass(Registry);
113d288ef4cSDimitry Andric   initializeRABasicPass(Registry);
114b915e9e0SDimitry Andric   initializeRAGreedyPass(Registry);
115eb11fae6SDimitry Andric   initializeRegAllocFastPass(Registry);
116eb11fae6SDimitry Andric   initializeRegUsageInfoCollectorPass(Registry);
117eb11fae6SDimitry Andric   initializeRegUsageInfoPropagationPass(Registry);
118411bd29eSDimitry Andric   initializeRegisterCoalescerPass(Registry);
119344a3780SDimitry Andric   initializeRemoveRedundantDebugValuesPass(Registry);
12001095a5dSDimitry Andric   initializeRenameIndependentSubregsPass(Registry);
1216b3f41edSDimitry Andric   initializeSafeStackLegacyPassPass(Registry);
122145449b1SDimitry Andric   initializeSelectOptimizePass(Registry);
123344a3780SDimitry Andric   initializeShadowStackGCLoweringPass(Registry);
1245a5ac124SDimitry Andric   initializeShrinkWrapPass(Registry);
125cfca06d7SDimitry Andric   initializeSjLjEHPreparePass(Registry);
126ac9a064cSDimitry Andric   initializeSlotIndexesWrapperPassPass(Registry);
127522600a2SDimitry Andric   initializeStackColoringPass(Registry);
128e3b55780SDimitry Andric   initializeStackFrameLayoutAnalysisPassPass(Registry);
1295a5ac124SDimitry Andric   initializeStackMapLivenessPass(Registry);
1305a5ac124SDimitry Andric   initializeStackProtectorPass(Registry);
131cf099d11SDimitry Andric   initializeStackSlotColoringPass(Registry);
132cfca06d7SDimitry Andric   initializeStripDebugMachineModulePass(Registry);
133eb11fae6SDimitry Andric   initializeTailDuplicatePass(Registry);
13463faed5bSDimitry Andric   initializeTargetPassConfigPass(Registry);
135ac9a064cSDimitry Andric   initializeTwoAddressInstructionLegacyPassPass(Registry);
136e3b55780SDimitry Andric   initializeTypePromotionLegacyPass(Registry);
13763faed5bSDimitry Andric   initializeUnpackMachineBundlesPass(Registry);
13801095a5dSDimitry Andric   initializeUnreachableBlockElimLegacyPassPass(Registry);
139cf099d11SDimitry Andric   initializeUnreachableMachineBlockElimPass(Registry);
140cf099d11SDimitry Andric   initializeVirtRegMapPass(Registry);
14158b69754SDimitry Andric   initializeVirtRegRewriterPass(Registry);
142eb11fae6SDimitry Andric   initializeWasmEHPreparePass(Registry);
1435a5ac124SDimitry Andric   initializeWinEHPreparePass(Registry);
14471d5a254SDimitry Andric   initializeXRayInstrumentationPass(Registry);
145cf099d11SDimitry Andric }
146