180fc0762SOwen Anderson //===-- CodeGen.cpp -------------------------------------------------------===//
280fc0762SOwen Anderson //
380fc0762SOwen Anderson //                     The LLVM Compiler Infrastructure
480fc0762SOwen Anderson //
580fc0762SOwen Anderson // This file is distributed under the University of Illinois Open Source
680fc0762SOwen Anderson // License. See LICENSE.TXT for details.
780fc0762SOwen Anderson //
880fc0762SOwen Anderson //===----------------------------------------------------------------------===//
980fc0762SOwen Anderson //
1080fc0762SOwen Anderson // This file implements the common initialization routines for the
1180fc0762SOwen Anderson // CodeGen library.
1280fc0762SOwen Anderson //
1380fc0762SOwen Anderson //===----------------------------------------------------------------------===//
1480fc0762SOwen Anderson 
1580fc0762SOwen Anderson #include "llvm-c/Initialization.h"
166bda14b3SChandler Carruth #include "llvm/InitializePasses.h"
178a8cd2baSChandler Carruth #include "llvm/PassRegistry.h"
1880fc0762SOwen Anderson 
1980fc0762SOwen Anderson using namespace llvm;
2080fc0762SOwen Anderson 
2180fc0762SOwen Anderson /// initializeCodeGen - Initialize all passes linked into the CodeGen library.
2280fc0762SOwen Anderson void llvm::initializeCodeGen(PassRegistry &Registry) {
2359c23cd9SRobin Morisset   initializeAtomicExpandPass(Registry);
2458648e4eSAndrew Trick   initializeBranchFolderPassPass(Registry);
2536919a4fSMatt Arsenault   initializeBranchRelaxationPass(Registry);
26e2bfcd63SPetar Jovanovic   initializeCFIInstrInserterPass(Registry);
27a349084aSQuentin Colombet   initializeCodeGenPreparePass(Registry);
2880fc0762SOwen Anderson   initializeDeadMachineInstructionElimPass(Registry);
29fbe85ae1SMatthias Braun   initializeDetectDeadLanesPass(Registry);
30be0a0506SReid Kleckner   initializeDwarfEHPreparePass(Registry);
31f8a63a15SJakob Stoklund Olesen   initializeEarlyIfConverterPass(Registry);
324a7c8e7aSMatthias Braun   initializeEarlyMachineLICMPass(Registry);
333ab9fcb9SMatthias Braun   initializeEarlyTailDuplicatePass(Registry);
34301ed0c3SChandler Carruth   initializeExpandISelPseudosPass(Registry);
35063bed9bSClement Courbet   initializeExpandMemCmpPassPass(Registry);
36be0a0506SReid Kleckner   initializeExpandPostRAPass(Registry);
37a7c041d1SNirav Dave   initializeFEntryInserterPass(Registry);
386e670529SMatthias Braun   initializeFinalizeMachineBundlesPass(Registry);
3997890230SDavid Majnemer   initializeFuncletLayoutPass(Registry);
401fa5bcbeSAndrew Trick   initializeGCMachineCodeAnalysisPass(Registry);
4180fc0762SOwen Anderson   initializeGCModuleInfoPass(Registry);
4280fc0762SOwen Anderson   initializeIfConverterPass(Registry);
436e670529SMatthias Braun   initializeImplicitNullChecksPass(Registry);
44c58f2166SChandler Carruth   initializeIndirectBrExpandPassPass(Registry);
45330a1255SMatthew Simpson   initializeInterleavedAccessPass(Registry);
466e670529SMatthias Braun   initializeLiveDebugValuesPass(Registry);
47d4900a64SJakob Stoklund Olesen   initializeLiveDebugVariablesPass(Registry);
4880fc0762SOwen Anderson   initializeLiveIntervalsPass(Registry);
496b737ddcSDehao Chen   initializeLiveRangeShrinkPass(Registry);
5080fc0762SOwen Anderson   initializeLiveStacksPass(Registry);
5180fc0762SOwen Anderson   initializeLiveVariablesPass(Registry);
521fa5bcbeSAndrew Trick   initializeLocalStackSlotPassPass(Registry);
53be0a0506SReid Kleckner   initializeLowerIntrinsicsPass(Registry);
54*bde0806dSMatthias Braun   initializeMIRCanonicalizerPass(Registry);
55875ebd5fSJakub Staszak   initializeMachineBlockFrequencyInfoPass(Registry);
5610281425SChandler Carruth   initializeMachineBlockPlacementPass(Registry);
57ae4e800cSChandler Carruth   initializeMachineBlockPlacementStatsPass(Registry);
58301ed0c3SChandler Carruth   initializeMachineCSEPass(Registry);
59be0a0506SReid Kleckner   initializeMachineCombinerPass(Registry);
60be0a0506SReid Kleckner   initializeMachineCopyPropagationPass(Registry);
6180fc0762SOwen Anderson   initializeMachineDominatorTreePass(Registry);
62be0a0506SReid Kleckner   initializeMachineFunctionPrinterPassPass(Registry);
6380fc0762SOwen Anderson   initializeMachineLICMPass(Registry);
6480fc0762SOwen Anderson   initializeMachineLoopInfoPass(Registry);
6580fc0762SOwen Anderson   initializeMachineModuleInfoPass(Registry);
66259a0cf3SJustin Bogner   initializeMachineOptimizationRemarkEmitterPassPass(Registry);
67596f483aSJessica Paquette   initializeMachineOutlinerPass(Registry);
68254f889dSBrendon Cahoon   initializeMachinePipelinerPass(Registry);
69be0a0506SReid Kleckner   initializeMachinePostDominatorTreePass(Registry);
7043130592SMatthias Braun   initializeMachineRegionInfoPassPass(Registry);
711fa5bcbeSAndrew Trick   initializeMachineSchedulerPass(Registry);
7280fc0762SOwen Anderson   initializeMachineSinkingPass(Registry);
7380fc0762SOwen Anderson   initializeMachineVerifierPassPass(Registry);
7480fc0762SOwen Anderson   initializeOptimizePHIsPass(Registry);
75be0a0506SReid Kleckner   initializePEIPass(Registry);
7680fc0762SOwen Anderson   initializePHIEliminationPass(Registry);
776e670529SMatthias Braun   initializePatchableFunctionPass(Registry);
7880fc0762SOwen Anderson   initializePeepholeOptimizerPass(Registry);
7917080b9bSAndrew Trick   initializePostMachineSchedulerPass(Registry);
80ee34680bSTom Stellard   initializePostRAHazardRecognizerPass(Registry);
812ecb7ba4SJun Bum Lim   initializePostRAMachineSinkingPass(Registry);
821fa5bcbeSAndrew Trick   initializePostRASchedulerPass(Registry);
8382d5da5aSMichael Kuperstein   initializePreISelIntrinsicLoweringLegacyPassPass(Registry);
8480fc0762SOwen Anderson   initializeProcessImplicitDefsPass(Registry);
85ebbaed6dSQuentin Colombet   initializeRABasicPass(Registry);
8611e60ff7STom Stellard   initializeRAGreedyPass(Registry);
87*bde0806dSMatthias Braun   initializeRegAllocFastPass(Registry);
88676c405aSRafael Espindola   initializeRegisterCoalescerPass(Registry);
89f9acacaaSMatthias Braun   initializeRenameIndependentSubregsPass(Registry);
9000d68222SAhmed Bougacha   initializeSafeStackLegacyPassPass(Registry);
91c5490e5aSAyman Musa   initializeScalarizeMaskedMemIntrinPass(Registry);
9261b305edSQuentin Colombet   initializeShrinkWrapPass(Registry);
9380fc0762SOwen Anderson   initializeSlotIndexesPass(Registry);
94301ed0c3SChandler Carruth   initializeStackColoringPass(Registry);
95be0a0506SReid Kleckner   initializeStackMapLivenessPass(Registry);
96be0a0506SReid Kleckner   initializeStackProtectorPass(Registry);
9780fc0762SOwen Anderson   initializeStackSlotColoringPass(Registry);
983ab9fcb9SMatthias Braun   initializeTailDuplicatePass(Registry);
99b7551336SAndrew Trick   initializeTargetPassConfigPass(Registry);
10080fc0762SOwen Anderson   initializeTwoAddressInstructionPassPass(Registry);
1011fa5bcbeSAndrew Trick   initializeUnpackMachineBundlesPass(Registry);
10290d195a5SWei Mi   initializeUnreachableBlockElimLegacyPassPass(Registry);
10380fc0762SOwen Anderson   initializeUnreachableMachineBlockElimPass(Registry);
10480fc0762SOwen Anderson   initializeVirtRegMapPass(Registry);
1051224312fSJakob Stoklund Olesen   initializeVirtRegRewriterPass(Registry);
10699d60e0dSHeejin Ahn   initializeWasmEHPreparePass(Registry);
107be0a0506SReid Kleckner   initializeWinEHPreparePass(Registry);
1086e670529SMatthias Braun   initializeXRayInstrumentationPass(Registry);
10980fc0762SOwen Anderson }
11080fc0762SOwen Anderson 
11180fc0762SOwen Anderson void LLVMInitializeCodeGen(LLVMPassRegistryRef R) {
11280fc0762SOwen Anderson   initializeCodeGen(*unwrap(R));
11380fc0762SOwen Anderson }
114