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/InitializePasses.h"
1680fc0762SOwen Anderson #include "llvm-c/Initialization.h"
1780fc0762SOwen Anderson 
1880fc0762SOwen Anderson using namespace llvm;
1980fc0762SOwen Anderson 
2080fc0762SOwen Anderson /// initializeCodeGen - Initialize all passes linked into the CodeGen library.
2180fc0762SOwen Anderson void llvm::initializeCodeGen(PassRegistry &Registry) {
2258648e4eSAndrew Trick   initializeBranchFolderPassPass(Registry);
2380fc0762SOwen Anderson   initializeCalculateSpillWeightsPass(Registry);
24*1fa5bcbeSAndrew Trick   initializeCodePlacementOptPass(Registry);
2580fc0762SOwen Anderson   initializeDeadMachineInstructionElimPass(Registry);
26*1fa5bcbeSAndrew Trick   initializeExpandPostRAPass(Registry);
27*1fa5bcbeSAndrew Trick   initializeExpandISelPseudosPass(Registry);
28*1fa5bcbeSAndrew Trick   initializeFinalizeMachineBundlesPass(Registry);
29*1fa5bcbeSAndrew Trick   initializeGCMachineCodeAnalysisPass(Registry);
3080fc0762SOwen Anderson   initializeGCModuleInfoPass(Registry);
3180fc0762SOwen Anderson   initializeIfConverterPass(Registry);
32d4900a64SJakob Stoklund Olesen   initializeLiveDebugVariablesPass(Registry);
3380fc0762SOwen Anderson   initializeLiveIntervalsPass(Registry);
3480fc0762SOwen Anderson   initializeLiveStacksPass(Registry);
3580fc0762SOwen Anderson   initializeLiveVariablesPass(Registry);
36*1fa5bcbeSAndrew Trick   initializeLocalStackSlotPassPass(Registry);
37875ebd5fSJakub Staszak   initializeMachineBlockFrequencyInfoPass(Registry);
3810281425SChandler Carruth   initializeMachineBlockPlacementPass(Registry);
39ae4e800cSChandler Carruth   initializeMachineBlockPlacementStatsPass(Registry);
40*1fa5bcbeSAndrew Trick   initializeMachineCopyPropagationPass(Registry);
4180fc0762SOwen Anderson   initializeMachineCSEPass(Registry);
4280fc0762SOwen Anderson   initializeMachineDominatorTreePass(Registry);
4380fc0762SOwen Anderson   initializeMachineLICMPass(Registry);
4480fc0762SOwen Anderson   initializeMachineLoopInfoPass(Registry);
4580fc0762SOwen Anderson   initializeMachineModuleInfoPass(Registry);
46*1fa5bcbeSAndrew Trick   initializeMachineSchedulerPass(Registry);
4780fc0762SOwen Anderson   initializeMachineSinkingPass(Registry);
4880fc0762SOwen Anderson   initializeMachineVerifierPassPass(Registry);
4980fc0762SOwen Anderson   initializeOptimizePHIsPass(Registry);
5080fc0762SOwen Anderson   initializePHIEliminationPass(Registry);
5180fc0762SOwen Anderson   initializePeepholeOptimizerPass(Registry);
52*1fa5bcbeSAndrew Trick   initializePostRASchedulerPass(Registry);
5380fc0762SOwen Anderson   initializeProcessImplicitDefsPass(Registry);
5480fc0762SOwen Anderson   initializePEIPass(Registry);
55676c405aSRafael Espindola   initializeRegisterCoalescerPass(Registry);
5680fc0762SOwen Anderson   initializeRenderMachineFunctionPass(Registry);
5780fc0762SOwen Anderson   initializeSlotIndexesPass(Registry);
5880fc0762SOwen Anderson   initializeStackProtectorPass(Registry);
5980fc0762SOwen Anderson   initializeStackSlotColoringPass(Registry);
6080fc0762SOwen Anderson   initializeStrongPHIEliminationPass(Registry);
61*1fa5bcbeSAndrew Trick   initializeTailDuplicatePassPass(Registry);
62b7551336SAndrew Trick   initializeTargetPassConfigPass(Registry);
6380fc0762SOwen Anderson   initializeTwoAddressInstructionPassPass(Registry);
64*1fa5bcbeSAndrew Trick   initializeUnpackMachineBundlesPass(Registry);
6580fc0762SOwen Anderson   initializeUnreachableBlockElimPass(Registry);
6680fc0762SOwen Anderson   initializeUnreachableMachineBlockElimPass(Registry);
6780fc0762SOwen Anderson   initializeVirtRegMapPass(Registry);
686c18d1aaSOwen Anderson   initializeLowerIntrinsicsPass(Registry);
6980fc0762SOwen Anderson }
7080fc0762SOwen Anderson 
7180fc0762SOwen Anderson void LLVMInitializeCodeGen(LLVMPassRegistryRef R) {
7280fc0762SOwen Anderson   initializeCodeGen(*unwrap(R));
7380fc0762SOwen Anderson }
74