//===-- Passes.cpp - Target independent code generation passes ------------===//
-//
+//
// 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
//===---------------------------------------------------------------------===//
#include "llvm/CodeGen/Passes.h"
-#include "Support/CommandLine.h"
+#include "llvm/Support/CommandLine.h"
#include <iostream>
using namespace llvm;
namespace {
- enum RegAllocName { simple, local, linearscan };
+ 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"),
- 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 *llvm::createRegisterAllocator() {
return createLocalRegisterAllocator();
case linearscan:
return createLinearScanRegisterAllocator();
+ case iterativescan:
+ return createIterativeScanRegisterAllocator();
}
}