180fc0762SOwen Anderson //===-- CodeGen.cpp -------------------------------------------------------===//
280fc0762SOwen Anderson //
32946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
42946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information.
52946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
680fc0762SOwen Anderson //
780fc0762SOwen Anderson //===----------------------------------------------------------------------===//
880fc0762SOwen Anderson //
980fc0762SOwen Anderson // This file implements the common initialization routines for the
1080fc0762SOwen Anderson // CodeGen library.
1180fc0762SOwen Anderson //
1280fc0762SOwen Anderson //===----------------------------------------------------------------------===//
1380fc0762SOwen Anderson 
1480fc0762SOwen Anderson #include "llvm-c/Initialization.h"
156bda14b3SChandler Carruth #include "llvm/InitializePasses.h"
168a8cd2baSChandler Carruth #include "llvm/PassRegistry.h"
1780fc0762SOwen Anderson 
1880fc0762SOwen Anderson using namespace llvm;
1980fc0762SOwen Anderson 
2080fc0762SOwen Anderson /// initializeCodeGen - Initialize all passes linked into the CodeGen library.
initializeCodeGen(PassRegistry & Registry)2180fc0762SOwen Anderson void llvm::initializeCodeGen(PassRegistry &Registry) {
2259c23cd9SRobin Morisset   initializeAtomicExpandPass(Registry);
238d943a92SSnehasish Kumar   initializeBasicBlockSectionsPass(Registry);
2458648e4eSAndrew Trick   initializeBranchFolderPassPass(Registry);
2536919a4fSMatt Arsenault   initializeBranchRelaxationPass(Registry);
26d157a9bcSAndrew Paverd   initializeCFGuardLongjmpPass(Registry);
27b4ad28daSMomchil Velikov   initializeCFIFixupPass(Registry);
28e2bfcd63SPetar Jovanovic   initializeCFIInstrInserterPass(Registry);
2939584ae5SXiang1 Zhang   initializeCheckDebugMachineModulePass(Registry);
30a349084aSQuentin Colombet   initializeCodeGenPreparePass(Registry);
3180fc0762SOwen Anderson   initializeDeadMachineInstructionElimPass(Registry);
321adeeabbSDaniel Sanders   initializeDebugifyMachineModulePass(Registry);
33fbe85ae1SMatthias Braun   initializeDetectDeadLanesPass(Registry);
34e6b1a27fSRoman Lebedev   initializeDwarfEHPrepareLegacyPassPass(Registry);
35f8a63a15SJakob Stoklund Olesen   initializeEarlyIfConverterPass(Registry);
36be699bf3SThomas Raoux   initializeEarlyIfPredicatorPass(Registry);
374a7c8e7aSMatthias Braun   initializeEarlyMachineLICMPass(Registry);
383ab9fcb9SMatthias Braun   initializeEarlyTailDuplicatePass(Registry);
392bf8d774SDmitri Gribenko   initializeExpandMemCmpPassPass(Registry);
40be0a0506SReid Kleckner   initializeExpandPostRAPass(Registry);
41a7c041d1SNirav Dave   initializeFEntryInserterPass(Registry);
429cac4e6dSMatt Arsenault   initializeFinalizeISelPass(Registry);
436e670529SMatthias Braun   initializeFinalizeMachineBundlesPass(Registry);
444275eb13SSerguei Katkov   initializeFixupStatepointCallerSavedPass(Registry);
4597890230SDavid Majnemer   initializeFuncletLayoutPass(Registry);
461fa5bcbeSAndrew Trick   initializeGCMachineCodeAnalysisPass(Registry);
4780fc0762SOwen Anderson   initializeGCModuleInfoPass(Registry);
48c5ef502eSSam Parker   initializeHardwareLoopsPass(Registry);
4980fc0762SOwen Anderson   initializeIfConverterPass(Registry);
506e670529SMatthias Braun   initializeImplicitNullChecksPass(Registry);
51c58f2166SChandler Carruth   initializeIndirectBrExpandPassPass(Registry);
52fef3036dSMartin Elshuber   initializeInterleavedLoadCombinePass(Registry);
53330a1255SMatthew Simpson   initializeInterleavedAccessPass(Registry);
54f9270214SYuanfang Chen   initializeJMCInstrumenterPass(Registry);
556e670529SMatthias Braun   initializeLiveDebugValuesPass(Registry);
56d4900a64SJakob Stoklund Olesen   initializeLiveDebugVariablesPass(Registry);
5780fc0762SOwen Anderson   initializeLiveIntervalsPass(Registry);
586b737ddcSDehao Chen   initializeLiveRangeShrinkPass(Registry);
5980fc0762SOwen Anderson   initializeLiveStacksPass(Registry);
6080fc0762SOwen Anderson   initializeLiveVariablesPass(Registry);
611fa5bcbeSAndrew Trick   initializeLocalStackSlotPassPass(Registry);
6264902d33SJulian Lettner   initializeLowerGlobalDtorsLegacyPassPass(Registry);
63be0a0506SReid Kleckner   initializeLowerIntrinsicsPass(Registry);
64bf113849SRong Xu   initializeMIRAddFSDiscriminatorsPass(Registry);
65bde0806dSMatthias Braun   initializeMIRCanonicalizerPass(Registry);
66dc97ca9fSPuyan Lotfi   initializeMIRNamerPass(Registry);
67bf113849SRong Xu   initializeMIRProfileLoaderPassPass(Registry);
68875ebd5fSJakub Staszak   initializeMachineBlockFrequencyInfoPass(Registry);
6910281425SChandler Carruth   initializeMachineBlockPlacementPass(Registry);
70ae4e800cSChandler Carruth   initializeMachineBlockPlacementStatsPass(Registry);
71301ed0c3SChandler Carruth   initializeMachineCSEPass(Registry);
72be0a0506SReid Kleckner   initializeMachineCombinerPass(Registry);
73be0a0506SReid Kleckner   initializeMachineCopyPropagationPass(Registry);
741d0244aeSSameer Sahasrabuddhe   initializeMachineCycleInfoPrinterPassPass(Registry);
751d0244aeSSameer Sahasrabuddhe   initializeMachineCycleInfoWrapperPassPass(Registry);
7680fc0762SOwen Anderson   initializeMachineDominatorTreePass(Registry);
77be0a0506SReid Kleckner   initializeMachineFunctionPrinterPassPass(Registry);
7880fc0762SOwen Anderson   initializeMachineLICMPass(Registry);
7980fc0762SOwen Anderson   initializeMachineLoopInfoPass(Registry);
80cc382cf7SYuanfang Chen   initializeMachineModuleInfoWrapperPassPass(Registry);
81259a0cf3SJustin Bogner   initializeMachineOptimizationRemarkEmitterPassPass(Registry);
82596f483aSJessica Paquette   initializeMachineOutlinerPass(Registry);
83254f889dSBrendon Cahoon   initializeMachinePipelinerPass(Registry);
8493549957SJames Molloy   initializeModuloScheduleTestPass(Registry);
85be0a0506SReid Kleckner   initializeMachinePostDominatorTreePass(Registry);
8643130592SMatthias Braun   initializeMachineRegionInfoPassPass(Registry);
871fa5bcbeSAndrew Trick   initializeMachineSchedulerPass(Registry);
8880fc0762SOwen Anderson   initializeMachineSinkingPass(Registry);
8980fc0762SOwen Anderson   initializeMachineVerifierPassPass(Registry);
9080fc0762SOwen Anderson   initializeOptimizePHIsPass(Registry);
91be0a0506SReid Kleckner   initializePEIPass(Registry);
9280fc0762SOwen Anderson   initializePHIEliminationPass(Registry);
936e670529SMatthias Braun   initializePatchableFunctionPass(Registry);
9480fc0762SOwen Anderson   initializePeepholeOptimizerPass(Registry);
9517080b9bSAndrew Trick   initializePostMachineSchedulerPass(Registry);
96ee34680bSTom Stellard   initializePostRAHazardRecognizerPass(Registry);
972ecb7ba4SJun Bum Lim   initializePostRAMachineSinkingPass(Registry);
981fa5bcbeSAndrew Trick   initializePostRASchedulerPass(Registry);
9982d5da5aSMichael Kuperstein   initializePreISelIntrinsicLoweringLegacyPassPass(Registry);
10080fc0762SOwen Anderson   initializeProcessImplicitDefsPass(Registry);
101ebbaed6dSQuentin Colombet   initializeRABasicPass(Registry);
10211e60ff7STom Stellard   initializeRAGreedyPass(Registry);
103bde0806dSMatthias Braun   initializeRegAllocFastPass(Registry);
1045c1e23b2SMatthias Braun   initializeRegUsageInfoCollectorPass(Registry);
1055c1e23b2SMatthias Braun   initializeRegUsageInfoPropagationPass(Registry);
106676c405aSRafael Espindola   initializeRegisterCoalescerPass(Registry);
107df686842SDjordje Todorovic   initializeRemoveRedundantDebugValuesPass(Registry);
108f9acacaaSMatthias Braun   initializeRenameIndependentSubregsPass(Registry);
10900d68222SAhmed Bougacha   initializeSafeStackLegacyPassPass(Registry);
110*ca7c307dSSotiris Apostolakis   initializeSelectOptimizePass(Registry);
1110fdb25cdSStanislav Mekhanoshin   initializeShadowStackGCLoweringPass(Registry);
11261b305edSQuentin Colombet   initializeShrinkWrapPass(Registry);
1133dabad1aSKazushi (Jam) Marukawa   initializeSjLjEHPreparePass(Registry);
11480fc0762SOwen Anderson   initializeSlotIndexesPass(Registry);
115301ed0c3SChandler Carruth   initializeStackColoringPass(Registry);
116be0a0506SReid Kleckner   initializeStackMapLivenessPass(Registry);
117be0a0506SReid Kleckner   initializeStackProtectorPass(Registry);
11880fc0762SOwen Anderson   initializeStackSlotColoringPass(Registry);
119a79b2fc4SDaniel Sanders   initializeStripDebugMachineModulePass(Registry);
1203ab9fcb9SMatthias Braun   initializeTailDuplicatePass(Registry);
121b7551336SAndrew Trick   initializeTargetPassConfigPass(Registry);
12280fc0762SOwen Anderson   initializeTwoAddressInstructionPassPass(Registry);
123bc76dadbSSam Parker   initializeTypePromotionPass(Registry);
1241fa5bcbeSAndrew Trick   initializeUnpackMachineBundlesPass(Registry);
12590d195a5SWei Mi   initializeUnreachableBlockElimLegacyPassPass(Registry);
12680fc0762SOwen Anderson   initializeUnreachableMachineBlockElimPass(Registry);
12780fc0762SOwen Anderson   initializeVirtRegMapPass(Registry);
1281224312fSJakob Stoklund Olesen   initializeVirtRegRewriterPass(Registry);
12999d60e0dSHeejin Ahn   initializeWasmEHPreparePass(Registry);
130be0a0506SReid Kleckner   initializeWinEHPreparePass(Registry);
1316e670529SMatthias Braun   initializeXRayInstrumentationPass(Registry);
13280fc0762SOwen Anderson }
13380fc0762SOwen Anderson 
LLVMInitializeCodeGen(LLVMPassRegistryRef R)13480fc0762SOwen Anderson void LLVMInitializeCodeGen(LLVMPassRegistryRef R) {
13580fc0762SOwen Anderson   initializeCodeGen(*unwrap(R));
13680fc0762SOwen Anderson }
137