| //===-- 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<RegisterRegAlloc::FunctionPassCtor, false, | 
 |                RegisterPassParser<RegisterRegAlloc> > | 
 | 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(); | 
 | } |