-//===-- Passes.cpp - Target independent code generation passes -*- C++ -*-===//
+//===-- Passes.cpp - Target independent code generation passes ------------===//
//
// The LLVM Compiler Infrastructure
//
#include "llvm/CodeGen/Passes.h"
#include "Support/CommandLine.h"
+#include <iostream>
+using namespace llvm;
namespace {
- enum RegAllocName { simple, local };
+ enum RegAllocName { simple, local, linearscan };
cl::opt<RegAllocName>
RegAlloc("regalloc",
cl::desc("Register allocator to use: (default = simple)"),
cl::Prefix,
- cl::values(clEnumVal(simple, " simple register allocator"),
- clEnumVal(local, " local register allocator"),
+ cl::values(clEnumVal(simple, " simple register allocator"),
+ clEnumVal(local, " local register allocator"),
+ clEnumVal(linearscan, " linear-scan global register allocator"),
0),
cl::init(local));
}
-FunctionPass *createRegisterAllocator()
-{
+FunctionPass *llvm::createRegisterAllocator() {
switch (RegAlloc) {
+ default:
+ std::cerr << "no register allocator selected";
+ abort();
case simple:
return createSimpleRegisterAllocator();
case local:
return createLocalRegisterAllocator();
- default:
- assert(0 && "no register allocator selected");
- return 0; // not reached
+ case linearscan:
+ return createLinearScanRegisterAllocator();
}
}
+