X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FCodeGen%2FPasses.cpp;h=4d2f111b2ed7b599923b134a922cc9625516abf5;hb=ef9531efedd2233269f670227fb0e6aae7480d53;hp=58a5105d4b611720fd02450b1c82da6925796987;hpb=ff0cbe175df40e0d2b36e59c6fb72f211f1cba4c;p=oota-llvm.git diff --git a/lib/CodeGen/Passes.cpp b/lib/CodeGen/Passes.cpp index 58a5105d4b6..4d2f111b2ed 100644 --- a/lib/CodeGen/Passes.cpp +++ b/lib/CodeGen/Passes.cpp @@ -1,4 +1,4 @@ -//===-- Passes.cpp - Target independent code generation passes -*- C++ -*-===// +//===-- Passes.cpp - Target independent code generation passes ------------===// // // The LLVM Compiler Infrastructure // @@ -13,37 +13,40 @@ //===---------------------------------------------------------------------===// #include "llvm/CodeGen/Passes.h" -#include "Support/CommandLine.h" - -namespace llvm { +#include "llvm/Support/CommandLine.h" +#include +using namespace llvm; namespace { - enum RegAllocName { simple, local, linearscan }; + enum RegAllocName { simple, local, linearscan, iterativescan }; 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"), - clEnumVal(linearscan, " linear-scan global register allocator"), - 0), - cl::init(local)); + RegAlloc( + "regalloc", + cl::desc("Register allocator to use: (default = linearscan)"), + cl::Prefix, + cl::values( + clEnumVal(simple, " simple register allocator"), + clEnumVal(local, " local register allocator"), + clEnumVal(linearscan, " linear scan register allocator"), + clEnumVal(iterativescan, " iterative scan register allocator"), + clEnumValEnd), + cl::init(linearscan)); } -FunctionPass *createRegisterAllocator() -{ +FunctionPass *llvm::createRegisterAllocator() { switch (RegAlloc) { + default: + std::cerr << "no register allocator selected"; + abort(); case simple: return createSimpleRegisterAllocator(); case local: return createLocalRegisterAllocator(); case linearscan: return createLinearScanRegisterAllocator(); - default: - assert(0 && "no register allocator selected"); - return 0; // not reached + case iterativescan: + return createIterativeScanRegisterAllocator(); } } -} // End llvm namespace