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"
1736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines#include "llvm/PassRegistry.h"
1878b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson
1978b152470d80c27eec82087b2a3c3fdf809e0050Owen Andersonusing namespace llvm;
2078b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson
2178b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson/// initializeCodeGen - Initialize all passes linked into the CodeGen library.
2278b152470d80c27eec82087b2a3c3fdf809e0050Owen Andersonvoid llvm::initializeCodeGen(PassRegistry &Registry) {
23dce4a407a24b04eebc6a376f8e62b41aaa7b071fStephen Hines  initializeAtomicExpandLoadLinkedPass(Registry);
24aeef83c6afa1e18d1cf9d359cc678ca0ad556175Chandler Carruth  initializeBasicTTIPass(Registry);
2561f1e3db43e556f495b6b9360d2f550291f78471Andrew Trick  initializeBranchFolderPassPass(Registry);
2636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines  initializeCodeGenPreparePass(Registry);
2778b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson  initializeDeadMachineInstructionElimPass(Registry);
2833242fd3ed5586091e73254b58dd1825e9d53c60Jakob Stoklund Olesen  initializeEarlyIfConverterPass(Registry);
291dd8c8560d45d36a8e507cd014352f1d313f9f9eAndrew Trick  initializeExpandPostRAPass(Registry);
301dd8c8560d45d36a8e507cd014352f1d313f9f9eAndrew Trick  initializeExpandISelPseudosPass(Registry);
311dd8c8560d45d36a8e507cd014352f1d313f9f9eAndrew Trick  initializeFinalizeMachineBundlesPass(Registry);
321dd8c8560d45d36a8e507cd014352f1d313f9f9eAndrew Trick  initializeGCMachineCodeAnalysisPass(Registry);
3378b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson  initializeGCModuleInfoPass(Registry);
3478b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson  initializeIfConverterPass(Registry);
35bb7b23f5b79a7ca2aa62faa1a6078428af597234Jakob Stoklund Olesen  initializeLiveDebugVariablesPass(Registry);
3678b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson  initializeLiveIntervalsPass(Registry);
3778b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson  initializeLiveStacksPass(Registry);
3878b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson  initializeLiveVariablesPass(Registry);
391dd8c8560d45d36a8e507cd014352f1d313f9f9eAndrew Trick  initializeLocalStackSlotPassPass(Registry);
40f55c1c85881afd65647bde5346f64d9685235c7cJakub Staszak  initializeMachineBlockFrequencyInfoPass(Registry);
41db35087d21f09fdde81cab7e12fc0bcd8b7d00e9Chandler Carruth  initializeMachineBlockPlacementPass(Registry);
4237efc9fe42a4867c81526cac7fca9fe0ea04a484Chandler Carruth  initializeMachineBlockPlacementStatsPass(Registry);
431dd8c8560d45d36a8e507cd014352f1d313f9f9eAndrew Trick  initializeMachineCopyPropagationPass(Registry);
4478b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson  initializeMachineCSEPass(Registry);
4578b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson  initializeMachineDominatorTreePass(Registry);
46a52c3acc14062a7c2220cedb9f75531bf730eda8Tom Stellard  initializeMachinePostDominatorTreePass(Registry);
4778b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson  initializeMachineLICMPass(Registry);
4878b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson  initializeMachineLoopInfoPass(Registry);
4978b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson  initializeMachineModuleInfoPass(Registry);
501dd8c8560d45d36a8e507cd014352f1d313f9f9eAndrew Trick  initializeMachineSchedulerPass(Registry);
5178b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson  initializeMachineSinkingPass(Registry);
5278b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson  initializeMachineVerifierPassPass(Registry);
5378b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson  initializeOptimizePHIsPass(Registry);
5478b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson  initializePHIEliminationPass(Registry);
5578b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson  initializePeepholeOptimizerPass(Registry);
5636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines  initializePostMachineSchedulerPass(Registry);
571dd8c8560d45d36a8e507cd014352f1d313f9f9eAndrew Trick  initializePostRASchedulerPass(Registry);
5878b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson  initializeProcessImplicitDefsPass(Registry);
5978b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson  initializePEIPass(Registry);
605b220213bfe9c37c2bb41a7ae0804e06a14f1007Rafael Espindola  initializeRegisterCoalescerPass(Registry);
6178b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson  initializeSlotIndexesPass(Registry);
6278b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson  initializeStackProtectorPass(Registry);
63c05d30601ced172b55be81bb529df6be91d6ae15Nadav Rotem  initializeStackColoringPass(Registry);
6478b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson  initializeStackSlotColoringPass(Registry);
651dd8c8560d45d36a8e507cd014352f1d313f9f9eAndrew Trick  initializeTailDuplicatePassPass(Registry);
667461334084aa77286b6f9af596fb0f6ba0465685Andrew Trick  initializeTargetPassConfigPass(Registry);
6778b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson  initializeTwoAddressInstructionPassPass(Registry);
681dd8c8560d45d36a8e507cd014352f1d313f9f9eAndrew Trick  initializeUnpackMachineBundlesPass(Registry);
6978b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson  initializeUnreachableBlockElimPass(Registry);
7078b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson  initializeUnreachableMachineBlockElimPass(Registry);
7178b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson  initializeVirtRegMapPass(Registry);
7205ec712e7f75635abbdd84dced69f4a45fe0f541Jakob Stoklund Olesen  initializeVirtRegRewriterPass(Registry);
73081c34b725980f995be9080eaec24cd3dfaaf065Owen Anderson  initializeLowerIntrinsicsPass(Registry);
746e1b8128505711276a87e96f6bffb818b435cbd5Bob Wilson  initializeMachineFunctionPrinterPassPass(Registry);
7536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines  initializeStackMapLivenessPass(Registry);
7678b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson}
7778b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson
7878b152470d80c27eec82087b2a3c3fdf809e0050Owen Andersonvoid LLVMInitializeCodeGen(LLVMPassRegistryRef R) {
7978b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson  initializeCodeGen(*unwrap(R));
8078b152470d80c27eec82087b2a3c3fdf809e0050Owen Anderson}
81