10b57cec5SDimitry Andric //===-- CodeGen.cpp -------------------------------------------------------===// 20b57cec5SDimitry Andric // 30b57cec5SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 40b57cec5SDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 50b57cec5SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 60b57cec5SDimitry Andric // 70b57cec5SDimitry Andric //===----------------------------------------------------------------------===// 80b57cec5SDimitry Andric // 90b57cec5SDimitry Andric // This file implements the common initialization routines for the 100b57cec5SDimitry Andric // CodeGen library. 110b57cec5SDimitry Andric // 120b57cec5SDimitry Andric //===----------------------------------------------------------------------===// 130b57cec5SDimitry Andric 140b57cec5SDimitry Andric #include "llvm-c/Initialization.h" 150b57cec5SDimitry Andric #include "llvm/InitializePasses.h" 160b57cec5SDimitry Andric #include "llvm/PassRegistry.h" 170b57cec5SDimitry Andric 180b57cec5SDimitry Andric using namespace llvm; 190b57cec5SDimitry Andric 200b57cec5SDimitry Andric /// initializeCodeGen - Initialize all passes linked into the CodeGen library. initializeCodeGen(PassRegistry & Registry)210b57cec5SDimitry Andricvoid llvm::initializeCodeGen(PassRegistry &Registry) { 220b57cec5SDimitry Andric initializeAtomicExpandPass(Registry); 23af732203SDimitry Andric initializeBasicBlockSectionsPass(Registry); 240b57cec5SDimitry Andric initializeBranchFolderPassPass(Registry); 250b57cec5SDimitry Andric initializeBranchRelaxationPass(Registry); 26480093f4SDimitry Andric initializeCFGuardLongjmpPass(Registry); 270b57cec5SDimitry Andric initializeCFIInstrInserterPass(Registry); 28af732203SDimitry Andric initializeCheckDebugMachineModulePass(Registry); 290b57cec5SDimitry Andric initializeCodeGenPreparePass(Registry); 300b57cec5SDimitry Andric initializeDeadMachineInstructionElimPass(Registry); 315ffd83dbSDimitry Andric initializeDebugifyMachineModulePass(Registry); 320b57cec5SDimitry Andric initializeDetectDeadLanesPass(Registry); 33af732203SDimitry Andric initializeDwarfEHPrepareLegacyPassPass(Registry); 340b57cec5SDimitry Andric initializeEarlyIfConverterPass(Registry); 358bcb0991SDimitry Andric initializeEarlyIfPredicatorPass(Registry); 360b57cec5SDimitry Andric initializeEarlyMachineLICMPass(Registry); 370b57cec5SDimitry Andric initializeEarlyTailDuplicatePass(Registry); 380b57cec5SDimitry Andric initializeExpandMemCmpPassPass(Registry); 390b57cec5SDimitry Andric initializeExpandPostRAPass(Registry); 400b57cec5SDimitry Andric initializeFEntryInserterPass(Registry); 410b57cec5SDimitry Andric initializeFinalizeISelPass(Registry); 420b57cec5SDimitry Andric initializeFinalizeMachineBundlesPass(Registry); 435ffd83dbSDimitry Andric initializeFixupStatepointCallerSavedPass(Registry); 440b57cec5SDimitry Andric initializeFuncletLayoutPass(Registry); 450b57cec5SDimitry Andric initializeGCMachineCodeAnalysisPass(Registry); 460b57cec5SDimitry Andric initializeGCModuleInfoPass(Registry); 470b57cec5SDimitry Andric initializeHardwareLoopsPass(Registry); 480b57cec5SDimitry Andric initializeIfConverterPass(Registry); 490b57cec5SDimitry Andric initializeImplicitNullChecksPass(Registry); 500b57cec5SDimitry Andric initializeIndirectBrExpandPassPass(Registry); 510b57cec5SDimitry Andric initializeInterleavedLoadCombinePass(Registry); 520b57cec5SDimitry Andric initializeInterleavedAccessPass(Registry); 530b57cec5SDimitry Andric initializeLiveDebugValuesPass(Registry); 540b57cec5SDimitry Andric initializeLiveDebugVariablesPass(Registry); 550b57cec5SDimitry Andric initializeLiveIntervalsPass(Registry); 560b57cec5SDimitry Andric initializeLiveRangeShrinkPass(Registry); 570b57cec5SDimitry Andric initializeLiveStacksPass(Registry); 580b57cec5SDimitry Andric initializeLiveVariablesPass(Registry); 590b57cec5SDimitry Andric initializeLocalStackSlotPassPass(Registry); 600b57cec5SDimitry Andric initializeLowerIntrinsicsPass(Registry); 610b57cec5SDimitry Andric initializeMIRCanonicalizerPass(Registry); 628bcb0991SDimitry Andric initializeMIRNamerPass(Registry); 630b57cec5SDimitry Andric initializeMachineBlockFrequencyInfoPass(Registry); 640b57cec5SDimitry Andric initializeMachineBlockPlacementPass(Registry); 650b57cec5SDimitry Andric initializeMachineBlockPlacementStatsPass(Registry); 660b57cec5SDimitry Andric initializeMachineCSEPass(Registry); 670b57cec5SDimitry Andric initializeMachineCombinerPass(Registry); 680b57cec5SDimitry Andric initializeMachineCopyPropagationPass(Registry); 690b57cec5SDimitry Andric initializeMachineDominatorTreePass(Registry); 700b57cec5SDimitry Andric initializeMachineFunctionPrinterPassPass(Registry); 710b57cec5SDimitry Andric initializeMachineLICMPass(Registry); 720b57cec5SDimitry Andric initializeMachineLoopInfoPass(Registry); 738bcb0991SDimitry Andric initializeMachineModuleInfoWrapperPassPass(Registry); 740b57cec5SDimitry Andric initializeMachineOptimizationRemarkEmitterPassPass(Registry); 750b57cec5SDimitry Andric initializeMachineOutlinerPass(Registry); 760b57cec5SDimitry Andric initializeMachinePipelinerPass(Registry); 778bcb0991SDimitry Andric initializeModuloScheduleTestPass(Registry); 780b57cec5SDimitry Andric initializeMachinePostDominatorTreePass(Registry); 790b57cec5SDimitry Andric initializeMachineRegionInfoPassPass(Registry); 800b57cec5SDimitry Andric initializeMachineSchedulerPass(Registry); 810b57cec5SDimitry Andric initializeMachineSinkingPass(Registry); 820b57cec5SDimitry Andric initializeMachineVerifierPassPass(Registry); 830b57cec5SDimitry Andric initializeOptimizePHIsPass(Registry); 840b57cec5SDimitry Andric initializePEIPass(Registry); 850b57cec5SDimitry Andric initializePHIEliminationPass(Registry); 860b57cec5SDimitry Andric initializePatchableFunctionPass(Registry); 870b57cec5SDimitry Andric initializePeepholeOptimizerPass(Registry); 880b57cec5SDimitry Andric initializePostMachineSchedulerPass(Registry); 890b57cec5SDimitry Andric initializePostRAHazardRecognizerPass(Registry); 900b57cec5SDimitry Andric initializePostRAMachineSinkingPass(Registry); 910b57cec5SDimitry Andric initializePostRASchedulerPass(Registry); 920b57cec5SDimitry Andric initializePreISelIntrinsicLoweringLegacyPassPass(Registry); 930b57cec5SDimitry Andric initializeProcessImplicitDefsPass(Registry); 940b57cec5SDimitry Andric initializeRABasicPass(Registry); 950b57cec5SDimitry Andric initializeRAGreedyPass(Registry); 960b57cec5SDimitry Andric initializeRegAllocFastPass(Registry); 970b57cec5SDimitry Andric initializeRegUsageInfoCollectorPass(Registry); 980b57cec5SDimitry Andric initializeRegUsageInfoPropagationPass(Registry); 990b57cec5SDimitry Andric initializeRegisterCoalescerPass(Registry); 100*5f7ddb14SDimitry Andric initializeRemoveRedundantDebugValuesPass(Registry); 1010b57cec5SDimitry Andric initializeRenameIndependentSubregsPass(Registry); 1020b57cec5SDimitry Andric initializeSafeStackLegacyPassPass(Registry); 103*5f7ddb14SDimitry Andric initializeShadowStackGCLoweringPass(Registry); 1040b57cec5SDimitry Andric initializeShrinkWrapPass(Registry); 1055ffd83dbSDimitry Andric initializeSjLjEHPreparePass(Registry); 1060b57cec5SDimitry Andric initializeSlotIndexesPass(Registry); 1070b57cec5SDimitry Andric initializeStackColoringPass(Registry); 1080b57cec5SDimitry Andric initializeStackMapLivenessPass(Registry); 1090b57cec5SDimitry Andric initializeStackProtectorPass(Registry); 1100b57cec5SDimitry Andric initializeStackSlotColoringPass(Registry); 1115ffd83dbSDimitry Andric initializeStripDebugMachineModulePass(Registry); 1120b57cec5SDimitry Andric initializeTailDuplicatePass(Registry); 1130b57cec5SDimitry Andric initializeTargetPassConfigPass(Registry); 1140b57cec5SDimitry Andric initializeTwoAddressInstructionPassPass(Registry); 115480093f4SDimitry Andric initializeTypePromotionPass(Registry); 1160b57cec5SDimitry Andric initializeUnpackMachineBundlesPass(Registry); 1170b57cec5SDimitry Andric initializeUnreachableBlockElimLegacyPassPass(Registry); 1180b57cec5SDimitry Andric initializeUnreachableMachineBlockElimPass(Registry); 1190b57cec5SDimitry Andric initializeVirtRegMapPass(Registry); 1200b57cec5SDimitry Andric initializeVirtRegRewriterPass(Registry); 1210b57cec5SDimitry Andric initializeWasmEHPreparePass(Registry); 1220b57cec5SDimitry Andric initializeWinEHPreparePass(Registry); 1230b57cec5SDimitry Andric initializeXRayInstrumentationPass(Registry); 1240b57cec5SDimitry Andric } 1250b57cec5SDimitry Andric LLVMInitializeCodeGen(LLVMPassRegistryRef R)1260b57cec5SDimitry Andricvoid LLVMInitializeCodeGen(LLVMPassRegistryRef R) { 1270b57cec5SDimitry Andric initializeCodeGen(*unwrap(R)); 1280b57cec5SDimitry Andric } 129