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 Andricvoid 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 Andricvoid LLVMInitializeCodeGen(LLVMPassRegistryRef R) { 1152754fe60SDimitry Andric initializeCodeGen(*unwrap(R)); 1162754fe60SDimitry Andric } 117