CodeGen.cpp revision 05ec712e7f75635abbdd84dced69f4a45fe0f541
178b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson//===-- CodeGen.cpp -------------------------------------------------------===//
278b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson//
378b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson//                     The LLVM Compiler Infrastructure
478b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson//
578b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson// This file is distributed under the University of Illinois Open Source
678b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson// License. See LICENSE.TXT for details.
778b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson//
878b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson//===----------------------------------------------------------------------===//
978b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson//
1078b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson// This file implements the common initialization routines for the
1178b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson// CodeGen library.
1278b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson//
1378b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson//===----------------------------------------------------------------------===//
1478b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson
1578b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson#include "llvm/InitializePasses.h"
1678b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson#include "llvm-c/Initialization.h"
1778b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson
1878b152470d80c27eec82087b2a3c3fdf809e0050Owen Andersonusing namespace llvm;
1978b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson
2078b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson/// initializeCodeGen - Initialize all passes linked into the CodeGen library.
2178b152470d80c27eec82087b2a3c3fdf809e0050Owen Andersonvoid llvm::initializeCodeGen(PassRegistry &Registry) {
2261f1e3db43e556f495b6b9360d2f550291f78471Andrew Trick  initializeBranchFolderPassPass(Registry);
2378b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson  initializeCalculateSpillWeightsPass(Registry);
241dd8c8560d45d36a8e507cd014352f1d313f9f9eAndrew Trick  initializeCodePlacementOptPass(Registry);
2578b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson  initializeDeadMachineInstructionElimPass(Registry);
261dd8c8560d45d36a8e507cd014352f1d313f9f9eAndrew Trick  initializeExpandPostRAPass(Registry);
271dd8c8560d45d36a8e507cd014352f1d313f9f9eAndrew Trick  initializeExpandISelPseudosPass(Registry);
281dd8c8560d45d36a8e507cd014352f1d313f9f9eAndrew Trick  initializeFinalizeMachineBundlesPass(Registry);
291dd8c8560d45d36a8e507cd014352f1d313f9f9eAndrew Trick  initializeGCMachineCodeAnalysisPass(Registry);
3078b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson  initializeGCModuleInfoPass(Registry);
3178b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson  initializeIfConverterPass(Registry);
32bb7b23f5b79a7ca2aa62faa1a6078428af597234Jakob Stoklund Olesen  initializeLiveDebugVariablesPass(Registry);
3378b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson  initializeLiveIntervalsPass(Registry);
3478b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson  initializeLiveStacksPass(Registry);
3578b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson  initializeLiveVariablesPass(Registry);
361dd8c8560d45d36a8e507cd014352f1d313f9f9eAndrew Trick  initializeLocalStackSlotPassPass(Registry);
37f55c1c85881afd65647bde5346f64d9685235c7cJakub Staszak  initializeMachineBlockFrequencyInfoPass(Registry);
38db35087d21f09fdde81cab7e12fc0bcd8b7d00e9Chandler Carruth  initializeMachineBlockPlacementPass(Registry);
3937efc9fe42a4867c81526cac7fca9fe0ea04a484Chandler Carruth  initializeMachineBlockPlacementStatsPass(Registry);
401dd8c8560d45d36a8e507cd014352f1d313f9f9eAndrew Trick  initializeMachineCopyPropagationPass(Registry);
4178b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson  initializeMachineCSEPass(Registry);
4278b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson  initializeMachineDominatorTreePass(Registry);
4378b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson  initializeMachineLICMPass(Registry);
4478b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson  initializeMachineLoopInfoPass(Registry);
4578b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson  initializeMachineModuleInfoPass(Registry);
461dd8c8560d45d36a8e507cd014352f1d313f9f9eAndrew Trick  initializeMachineSchedulerPass(Registry);
4778b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson  initializeMachineSinkingPass(Registry);
4878b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson  initializeMachineVerifierPassPass(Registry);
4978b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson  initializeOptimizePHIsPass(Registry);
5078b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson  initializePHIEliminationPass(Registry);
5178b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson  initializePeepholeOptimizerPass(Registry);
521dd8c8560d45d36a8e507cd014352f1d313f9f9eAndrew Trick  initializePostRASchedulerPass(Registry);
5378b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson  initializeProcessImplicitDefsPass(Registry);
5478b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson  initializePEIPass(Registry);
555b220213bfe9c37c2bb41a7ae0804e06a14f1007Rafael Espindola  initializeRegisterCoalescerPass(Registry);
5678b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson  initializeRenderMachineFunctionPass(Registry);
5778b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson  initializeSlotIndexesPass(Registry);
5878b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson  initializeStackProtectorPass(Registry);
5978b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson  initializeStackSlotColoringPass(Registry);
6078b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson  initializeStrongPHIEliminationPass(Registry);
611dd8c8560d45d36a8e507cd014352f1d313f9f9eAndrew Trick  initializeTailDuplicatePassPass(Registry);
627461334084aa77286b6f9af596fb0f6ba0465685Andrew Trick  initializeTargetPassConfigPass(Registry);
6378b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson  initializeTwoAddressInstructionPassPass(Registry);
641dd8c8560d45d36a8e507cd014352f1d313f9f9eAndrew Trick  initializeUnpackMachineBundlesPass(Registry);
6578b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson  initializeUnreachableBlockElimPass(Registry);
6678b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson  initializeUnreachableMachineBlockElimPass(Registry);
6778b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson  initializeVirtRegMapPass(Registry);
6805ec712e7f75635abbdd84dced69f4a45fe0f541Jakob Stoklund Olesen  initializeVirtRegRewriterPass(Registry);
69081c34b725980f995be9080eaec24cd3dfaaf065Owen Anderson  initializeLowerIntrinsicsPass(Registry);
706e1b8128505711276a87e96f6bffb818b435cbd5Bob Wilson  initializeMachineFunctionPrinterPassPass(Registry);
7178b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson}
7278b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson
7378b152470d80c27eec82087b2a3c3fdf809e0050Owen Andersonvoid LLVMInitializeCodeGen(LLVMPassRegistryRef R) {
7478b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson  initializeCodeGen(*unwrap(R));
7578b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson}
76