//===-- Passes.cpp - Target independent code generation passes -*- C++ -*-===// // // The LLVM Compiler Infrastructure // // This file was developed by the LLVM research group and 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/Passes.h" #include "Support/CommandLine.h" namespace { enum RegAllocName { simple, local }; cl::opt RegAlloc("regalloc", cl::desc("Register allocator to use: (default = simple)"), cl::Prefix, cl::values(clEnumVal(simple, " simple register allocator"), clEnumVal(local, " local register allocator"), 0), cl::init(local)); } FunctionPass *createRegisterAllocator() { switch (RegAlloc) { case simple: return createSimpleRegisterAllocator(); case local: return createLocalRegisterAllocator(); default: assert(0 && "no register allocator selected"); return 0; // not reached } }