//===-- Passes.cpp - Target independent code generation passes ------------===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // // This file defines interfaces to access the target independent code // generation passes provided by the LLVM backend. // //===---------------------------------------------------------------------===// #include "llvm/CodeGen/RegAllocRegistry.h" #include "llvm/CodeGen/Passes.h" using namespace llvm; //===---------------------------------------------------------------------===// /// /// RegisterRegAlloc class - Track the registration of register allocators. /// //===---------------------------------------------------------------------===// MachinePassRegistry RegisterRegAlloc::Registry; //===---------------------------------------------------------------------===// /// /// RegAlloc command line options. /// //===---------------------------------------------------------------------===// static cl::opt > RegAlloc("regalloc", cl::init(&createLinearScanRegisterAllocator), cl::desc("Register allocator to use: (default = linearscan)")); //===---------------------------------------------------------------------===// /// /// createRegisterAllocator - choose the appropriate register allocator. /// //===---------------------------------------------------------------------===// FunctionPass *llvm::createRegisterAllocator() { RegisterRegAlloc::FunctionPassCtor Ctor = RegisterRegAlloc::getDefault(); if (!Ctor) { Ctor = RegAlloc; RegisterRegAlloc::setDefault(RegAlloc); } return Ctor(); }