86f354eb32f43d066b82aaccec380b5900458f1e
[oota-llvm.git] / lib / CodeGen / Passes.cpp
1 //===-- Passes.cpp - Target independent code generation passes -*- C++ -*-===//
2 //
3 // This file defines interfaces to access the target independent code
4 // generation passes provided by the LLVM backend.
5 //
6 //===---------------------------------------------------------------------===//
7
8 #include "llvm/CodeGen/Passes.h"
9 #include "Support/CommandLine.h"
10
11 namespace {
12   enum RegAllocName { simple, local };
13
14   cl::opt<RegAllocName>
15   RegAlloc("regalloc",
16            cl::desc("Register allocator to use: (default = simple)"),
17            cl::Prefix,
18            cl::values(clEnumVal(simple, "  simple register allocator"),
19                       clEnumVal(local,  "  local register allocator"),
20                       0),
21            cl::init(local));
22 }
23
24 FunctionPass *createRegisterAllocator()
25 {
26   switch (RegAlloc) {
27   case simple:
28     return createSimpleRegisterAllocator();
29   case local:
30     return createLocalRegisterAllocator();
31   default:
32     assert(0 && "no register allocator selected");
33     return 0; // not reached
34   }
35 }