12754fe60SDimitry Andric //===-- CodeGen.cpp -------------------------------------------------------===//
22754fe60SDimitry Andric //
32754fe60SDimitry Andric //                     The LLVM Compiler Infrastructure
42754fe60SDimitry Andric //
52754fe60SDimitry Andric // This file is distributed under the University of Illinois Open Source
62754fe60SDimitry Andric // License. See LICENSE.TXT for details.
72754fe60SDimitry Andric //
82754fe60SDimitry Andric //===----------------------------------------------------------------------===//
92754fe60SDimitry Andric //
102754fe60SDimitry Andric // This file implements the common initialization routines for the
112754fe60SDimitry Andric // CodeGen library.
122754fe60SDimitry Andric //
132754fe60SDimitry Andric //===----------------------------------------------------------------------===//
142754fe60SDimitry Andric 
152754fe60SDimitry Andric #include "llvm-c/Initialization.h"
16db17bf38SDimitry Andric #include "llvm/InitializePasses.h"
1791bc56edSDimitry Andric #include "llvm/PassRegistry.h"
182754fe60SDimitry Andric 
192754fe60SDimitry Andric using namespace llvm;
202754fe60SDimitry Andric 
212754fe60SDimitry Andric /// initializeCodeGen - Initialize all passes linked into the CodeGen library.
initializeCodeGen(PassRegistry & Registry)222754fe60SDimitry Andric void llvm::initializeCodeGen(PassRegistry &Registry) {
2339d628a0SDimitry Andric   initializeAtomicExpandPass(Registry);
24dff0c46cSDimitry Andric   initializeBranchFolderPassPass(Registry);
25d88c1a5aSDimitry Andric   initializeBranchRelaxationPass(Registry);
264ba319b5SDimitry Andric   initializeCFIInstrInserterPass(Registry);
2791bc56edSDimitry Andric   initializeCodeGenPreparePass(Registry);
282754fe60SDimitry Andric   initializeDeadMachineInstructionElimPass(Registry);
293ca95b02SDimitry Andric   initializeDetectDeadLanesPass(Registry);
30ff0cc061SDimitry Andric   initializeDwarfEHPreparePass(Registry);
317ae0e2c9SDimitry Andric   initializeEarlyIfConverterPass(Registry);
324ba319b5SDimitry Andric   initializeEarlyMachineLICMPass(Registry);
334ba319b5SDimitry Andric   initializeEarlyTailDuplicatePass(Registry);
34dff0c46cSDimitry Andric   initializeExpandISelPseudosPass(Registry);
352cab237bSDimitry Andric   initializeExpandMemCmpPassPass(Registry);
36ff0cc061SDimitry Andric   initializeExpandPostRAPass(Registry);
377a7e6055SDimitry Andric   initializeFEntryInserterPass(Registry);
38dff0c46cSDimitry Andric   initializeFinalizeMachineBundlesPass(Registry);
397d523365SDimitry Andric   initializeFuncletLayoutPass(Registry);
40dff0c46cSDimitry Andric   initializeGCMachineCodeAnalysisPass(Registry);
412754fe60SDimitry Andric   initializeGCModuleInfoPass(Registry);
422754fe60SDimitry Andric   initializeIfConverterPass(Registry);
437a7e6055SDimitry Andric   initializeImplicitNullChecksPass(Registry);
4407577dfeSDimitry Andric   initializeIndirectBrExpandPassPass(Registry);
45*b5893f02SDimitry Andric   initializeInterleavedLoadCombinePass(Registry);
463ca95b02SDimitry Andric   initializeInterleavedAccessPass(Registry);
477a7e6055SDimitry Andric   initializeLiveDebugValuesPass(Registry);
482754fe60SDimitry Andric   initializeLiveDebugVariablesPass(Registry);
492754fe60SDimitry Andric   initializeLiveIntervalsPass(Registry);
50f9448bf3SDimitry Andric   initializeLiveRangeShrinkPass(Registry);
512754fe60SDimitry Andric   initializeLiveStacksPass(Registry);
522754fe60SDimitry Andric   initializeLiveVariablesPass(Registry);
53dff0c46cSDimitry Andric   initializeLocalStackSlotPassPass(Registry);
54ff0cc061SDimitry Andric   initializeLowerIntrinsicsPass(Registry);
554ba319b5SDimitry Andric   initializeMIRCanonicalizerPass(Registry);
566122f3e6SDimitry Andric   initializeMachineBlockFrequencyInfoPass(Registry);
57dff0c46cSDimitry Andric   initializeMachineBlockPlacementPass(Registry);
58dff0c46cSDimitry Andric   initializeMachineBlockPlacementStatsPass(Registry);
592754fe60SDimitry Andric   initializeMachineCSEPass(Registry);
60ff0cc061SDimitry Andric   initializeMachineCombinerPass(Registry);
61ff0cc061SDimitry Andric   initializeMachineCopyPropagationPass(Registry);
622754fe60SDimitry Andric   initializeMachineDominatorTreePass(Registry);
63ff0cc061SDimitry Andric   initializeMachineFunctionPrinterPassPass(Registry);
642754fe60SDimitry Andric   initializeMachineLICMPass(Registry);
652754fe60SDimitry Andric   initializeMachineLoopInfoPass(Registry);
662754fe60SDimitry Andric   initializeMachineModuleInfoPass(Registry);
677a7e6055SDimitry Andric   initializeMachineOptimizationRemarkEmitterPassPass(Registry);
687a7e6055SDimitry Andric   initializeMachineOutlinerPass(Registry);
69d88c1a5aSDimitry Andric   initializeMachinePipelinerPass(Registry);
70ff0cc061SDimitry Andric   initializeMachinePostDominatorTreePass(Registry);
717a7e6055SDimitry Andric   initializeMachineRegionInfoPassPass(Registry);
72dff0c46cSDimitry Andric   initializeMachineSchedulerPass(Registry);
732754fe60SDimitry Andric   initializeMachineSinkingPass(Registry);
742754fe60SDimitry Andric   initializeMachineVerifierPassPass(Registry);
752754fe60SDimitry Andric   initializeOptimizePHIsPass(Registry);
76ff0cc061SDimitry Andric   initializePEIPass(Registry);
772754fe60SDimitry Andric   initializePHIEliminationPass(Registry);
787a7e6055SDimitry Andric   initializePatchableFunctionPass(Registry);
792754fe60SDimitry Andric   initializePeepholeOptimizerPass(Registry);
8091bc56edSDimitry Andric   initializePostMachineSchedulerPass(Registry);
813ca95b02SDimitry Andric   initializePostRAHazardRecognizerPass(Registry);
824ba319b5SDimitry Andric   initializePostRAMachineSinkingPass(Registry);
83dff0c46cSDimitry Andric   initializePostRASchedulerPass(Registry);
843ca95b02SDimitry Andric   initializePreISelIntrinsicLoweringLegacyPassPass(Registry);
852754fe60SDimitry Andric   initializeProcessImplicitDefsPass(Registry);
866d97bb29SDimitry Andric   initializeRABasicPass(Registry);
87d88c1a5aSDimitry Andric   initializeRAGreedyPass(Registry);
884ba319b5SDimitry Andric   initializeRegAllocFastPass(Registry);
894ba319b5SDimitry Andric   initializeRegUsageInfoCollectorPass(Registry);
904ba319b5SDimitry Andric   initializeRegUsageInfoPropagationPass(Registry);
9117a519f9SDimitry Andric   initializeRegisterCoalescerPass(Registry);
923ca95b02SDimitry Andric   initializeRenameIndependentSubregsPass(Registry);
935517e702SDimitry Andric   initializeSafeStackLegacyPassPass(Registry);
945517e702SDimitry Andric   initializeScalarizeMaskedMemIntrinPass(Registry);
95ff0cc061SDimitry Andric   initializeShrinkWrapPass(Registry);
962754fe60SDimitry Andric   initializeSlotIndexesPass(Registry);
973861d79fSDimitry Andric   initializeStackColoringPass(Registry);
98ff0cc061SDimitry Andric   initializeStackMapLivenessPass(Registry);
99ff0cc061SDimitry Andric   initializeStackProtectorPass(Registry);
1002754fe60SDimitry Andric   initializeStackSlotColoringPass(Registry);
1014ba319b5SDimitry Andric   initializeTailDuplicatePass(Registry);
102dff0c46cSDimitry Andric   initializeTargetPassConfigPass(Registry);
1032754fe60SDimitry Andric   initializeTwoAddressInstructionPassPass(Registry);
104dff0c46cSDimitry Andric   initializeUnpackMachineBundlesPass(Registry);
1053ca95b02SDimitry Andric   initializeUnreachableBlockElimLegacyPassPass(Registry);
1062754fe60SDimitry Andric   initializeUnreachableMachineBlockElimPass(Registry);
1072754fe60SDimitry Andric   initializeVirtRegMapPass(Registry);
1087ae0e2c9SDimitry Andric   initializeVirtRegRewriterPass(Registry);
1094ba319b5SDimitry Andric   initializeWasmEHPreparePass(Registry);
110ff0cc061SDimitry Andric   initializeWinEHPreparePass(Registry);
1117a7e6055SDimitry Andric   initializeXRayInstrumentationPass(Registry);
1122754fe60SDimitry Andric }
1132754fe60SDimitry Andric 
LLVMInitializeCodeGen(LLVMPassRegistryRef R)1142754fe60SDimitry Andric void LLVMInitializeCodeGen(LLVMPassRegistryRef R) {
1152754fe60SDimitry Andric   initializeCodeGen(*unwrap(R));
1162754fe60SDimitry Andric }
117