In the joiner, merge the small interval into the large interval. This restores
[oota-llvm.git] / lib / CodeGen / Passes.cpp
index 239eacde4c146da14c8f46f3b764f1e296b98747..7233e81473b6e033d572ce3adf7180aa18aa37de 100644 (file)
@@ -1,4 +1,4 @@
-//===-- 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"
-
-namespace llvm {
+#include <iostream>
+using namespace llvm;
 
 namespace {
-  enum RegAllocName { simple, local };
+  enum RegAllocName { simple, local, linearscan, iterativescan };
 
   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"),
-                      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();
-  default:
-    assert(0 && "no register allocator selected");
-    return 0; // not reached
+  case linearscan:
+    return createLinearScanRegisterAllocator();
+  case iterativescan:
+    return createIterativeScanRegisterAllocator();
   }
 }
 
-} // End llvm namespace