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/InitializePasses.h" 162754fe60SDimitry Andric #include "llvm-c/Initialization.h" 172754fe60SDimitry Andric 182754fe60SDimitry Andric using namespace llvm; 192754fe60SDimitry Andric 202754fe60SDimitry Andric /// initializeCodeGen - Initialize all passes linked into the CodeGen library. 212754fe60SDimitry Andric void llvm::initializeCodeGen(PassRegistry &Registry) { 22139f7f9bSDimitry Andric initializeBasicTTIPass(Registry); 23dff0c46cSDimitry Andric initializeBranchFolderPassPass(Registry); 242754fe60SDimitry Andric initializeCalculateSpillWeightsPass(Registry); 252754fe60SDimitry Andric initializeDeadMachineInstructionElimPass(Registry); 267ae0e2c9SDimitry Andric initializeEarlyIfConverterPass(Registry); 27dff0c46cSDimitry Andric initializeExpandPostRAPass(Registry); 28dff0c46cSDimitry Andric initializeExpandISelPseudosPass(Registry); 29dff0c46cSDimitry Andric initializeFinalizeMachineBundlesPass(Registry); 30dff0c46cSDimitry Andric initializeGCMachineCodeAnalysisPass(Registry); 312754fe60SDimitry Andric initializeGCModuleInfoPass(Registry); 322754fe60SDimitry Andric initializeIfConverterPass(Registry); 332754fe60SDimitry Andric initializeLiveDebugVariablesPass(Registry); 342754fe60SDimitry Andric initializeLiveIntervalsPass(Registry); 352754fe60SDimitry Andric initializeLiveStacksPass(Registry); 362754fe60SDimitry Andric initializeLiveVariablesPass(Registry); 37dff0c46cSDimitry Andric initializeLocalStackSlotPassPass(Registry); 386122f3e6SDimitry Andric initializeMachineBlockFrequencyInfoPass(Registry); 39dff0c46cSDimitry Andric initializeMachineBlockPlacementPass(Registry); 40dff0c46cSDimitry Andric initializeMachineBlockPlacementStatsPass(Registry); 41dff0c46cSDimitry Andric initializeMachineCopyPropagationPass(Registry); 422754fe60SDimitry Andric initializeMachineCSEPass(Registry); 432754fe60SDimitry Andric initializeMachineDominatorTreePass(Registry); 443861d79fSDimitry Andric initializeMachinePostDominatorTreePass(Registry); 452754fe60SDimitry Andric initializeMachineLICMPass(Registry); 462754fe60SDimitry Andric initializeMachineLoopInfoPass(Registry); 472754fe60SDimitry Andric initializeMachineModuleInfoPass(Registry); 48dff0c46cSDimitry Andric initializeMachineSchedulerPass(Registry); 492754fe60SDimitry Andric initializeMachineSinkingPass(Registry); 502754fe60SDimitry Andric initializeMachineVerifierPassPass(Registry); 512754fe60SDimitry Andric initializeOptimizePHIsPass(Registry); 522754fe60SDimitry Andric initializePHIEliminationPass(Registry); 532754fe60SDimitry Andric initializePeepholeOptimizerPass(Registry); 54dff0c46cSDimitry Andric initializePostRASchedulerPass(Registry); 552754fe60SDimitry Andric initializeProcessImplicitDefsPass(Registry); 562754fe60SDimitry Andric initializePEIPass(Registry); 5717a519f9SDimitry Andric initializeRegisterCoalescerPass(Registry); 582754fe60SDimitry Andric initializeSlotIndexesPass(Registry); 592754fe60SDimitry Andric initializeStackProtectorPass(Registry); 603861d79fSDimitry Andric initializeStackColoringPass(Registry); 612754fe60SDimitry Andric initializeStackSlotColoringPass(Registry); 622754fe60SDimitry Andric initializeStrongPHIEliminationPass(Registry); 63dff0c46cSDimitry Andric initializeTailDuplicatePassPass(Registry); 64dff0c46cSDimitry Andric initializeTargetPassConfigPass(Registry); 652754fe60SDimitry Andric initializeTwoAddressInstructionPassPass(Registry); 66dff0c46cSDimitry Andric initializeUnpackMachineBundlesPass(Registry); 672754fe60SDimitry Andric initializeUnreachableBlockElimPass(Registry); 682754fe60SDimitry Andric initializeUnreachableMachineBlockElimPass(Registry); 692754fe60SDimitry Andric initializeVirtRegMapPass(Registry); 707ae0e2c9SDimitry Andric initializeVirtRegRewriterPass(Registry); 712754fe60SDimitry Andric initializeLowerIntrinsicsPass(Registry); 727ae0e2c9SDimitry Andric initializeMachineFunctionPrinterPassPass(Registry); 732754fe60SDimitry Andric } 742754fe60SDimitry Andric 752754fe60SDimitry Andric void LLVMInitializeCodeGen(LLVMPassRegistryRef R) { 762754fe60SDimitry Andric initializeCodeGen(*unwrap(R)); 772754fe60SDimitry Andric } 78