1218885Sdim//===-- CodeGen.cpp -------------------------------------------------------===//
2218885Sdim//
3218885Sdim//                     The LLVM Compiler Infrastructure
4218885Sdim//
5218885Sdim// This file is distributed under the University of Illinois Open Source
6218885Sdim// License. See LICENSE.TXT for details.
7218885Sdim//
8218885Sdim//===----------------------------------------------------------------------===//
9218885Sdim//
10218885Sdim// This file implements the common initialization routines for the
11218885Sdim// CodeGen library.
12218885Sdim//
13218885Sdim//===----------------------------------------------------------------------===//
14218885Sdim
15218885Sdim#include "llvm/InitializePasses.h"
16251662Sdim#include "llvm/PassRegistry.h"
17218885Sdim#include "llvm-c/Initialization.h"
18218885Sdim
19218885Sdimusing namespace llvm;
20218885Sdim
21218885Sdim/// initializeCodeGen - Initialize all passes linked into the CodeGen library.
22218885Sdimvoid llvm::initializeCodeGen(PassRegistry &Registry) {
23249423Sdim  initializeBasicTTIPass(Registry);
24234353Sdim  initializeBranchFolderPassPass(Registry);
25218885Sdim  initializeDeadMachineInstructionElimPass(Registry);
26239462Sdim  initializeEarlyIfConverterPass(Registry);
27234353Sdim  initializeExpandPostRAPass(Registry);
28234353Sdim  initializeExpandISelPseudosPass(Registry);
29234353Sdim  initializeFinalizeMachineBundlesPass(Registry);
30234353Sdim  initializeGCMachineCodeAnalysisPass(Registry);
31218885Sdim  initializeGCModuleInfoPass(Registry);
32218885Sdim  initializeIfConverterPass(Registry);
33218885Sdim  initializeLiveDebugVariablesPass(Registry);
34218885Sdim  initializeLiveIntervalsPass(Registry);
35218885Sdim  initializeLiveStacksPass(Registry);
36218885Sdim  initializeLiveVariablesPass(Registry);
37234353Sdim  initializeLocalStackSlotPassPass(Registry);
38226633Sdim  initializeMachineBlockFrequencyInfoPass(Registry);
39234353Sdim  initializeMachineBlockPlacementPass(Registry);
40234353Sdim  initializeMachineBlockPlacementStatsPass(Registry);
41234353Sdim  initializeMachineCopyPropagationPass(Registry);
42218885Sdim  initializeMachineCSEPass(Registry);
43218885Sdim  initializeMachineDominatorTreePass(Registry);
44243830Sdim  initializeMachinePostDominatorTreePass(Registry);
45218885Sdim  initializeMachineLICMPass(Registry);
46218885Sdim  initializeMachineLoopInfoPass(Registry);
47218885Sdim  initializeMachineModuleInfoPass(Registry);
48234353Sdim  initializeMachineSchedulerPass(Registry);
49218885Sdim  initializeMachineSinkingPass(Registry);
50218885Sdim  initializeMachineVerifierPassPass(Registry);
51218885Sdim  initializeOptimizePHIsPass(Registry);
52218885Sdim  initializePHIEliminationPass(Registry);
53218885Sdim  initializePeepholeOptimizerPass(Registry);
54234353Sdim  initializePostRASchedulerPass(Registry);
55218885Sdim  initializeProcessImplicitDefsPass(Registry);
56218885Sdim  initializePEIPass(Registry);
57224145Sdim  initializeRegisterCoalescerPass(Registry);
58218885Sdim  initializeSlotIndexesPass(Registry);
59218885Sdim  initializeStackProtectorPass(Registry);
60243830Sdim  initializeStackColoringPass(Registry);
61218885Sdim  initializeStackSlotColoringPass(Registry);
62234353Sdim  initializeTailDuplicatePassPass(Registry);
63234353Sdim  initializeTargetPassConfigPass(Registry);
64218885Sdim  initializeTwoAddressInstructionPassPass(Registry);
65234353Sdim  initializeUnpackMachineBundlesPass(Registry);
66218885Sdim  initializeUnreachableBlockElimPass(Registry);
67218885Sdim  initializeUnreachableMachineBlockElimPass(Registry);
68218885Sdim  initializeVirtRegMapPass(Registry);
69239462Sdim  initializeVirtRegRewriterPass(Registry);
70218885Sdim  initializeLowerIntrinsicsPass(Registry);
71239462Sdim  initializeMachineFunctionPrinterPassPass(Registry);
72218885Sdim}
73218885Sdim
74218885Sdimvoid LLVMInitializeCodeGen(LLVMPassRegistryRef R) {
75218885Sdim  initializeCodeGen(*unwrap(R));
76218885Sdim}
77