Add mechanism to select register allocator to use


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5079 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Target/X86/X86TargetMachine.cpp b/lib/Target/X86/X86TargetMachine.cpp
index d710eb4..cdb7dea 100644
--- a/lib/Target/X86/X86TargetMachine.cpp
+++ b/lib/Target/X86/X86TargetMachine.cpp
@@ -8,11 +8,17 @@
 #include "llvm/Transforms/Scalar.h"
 #include "llvm/Target/TargetMachineImpls.h"
 #include "llvm/CodeGen/MachineFunction.h"
-#include "Support/Statistic.h"
 #include "llvm/PassManager.h"
 #include "X86.h"
+#include "Support/CommandLine.h"
+#include "Support/Statistic.h"
 #include <iostream>
 
+namespace {
+  cl::opt<bool> UseLocalRA("local-ra",
+                           cl::desc("Use Local RegAlloc instead of Simple RA"));
+}
+
 // allocateX86TargetMachine - Allocate and return a subclass of TargetMachine
 // that implements the X86 backend.
 //
@@ -43,7 +49,10 @@
   DEBUG(PM.add(createMachineFunctionPrinterPass()));
 
   // Perform register allocation to convert to a concrete x86 representation
-  PM.add(createSimpleRegisterAllocator(*this));
+  if (UseLocalRA)
+    PM.add(createLocalRegisterAllocator(*this));
+  else
+    PM.add(createSimpleRegisterAllocator(*this));
 
   // Print the instruction selected machine code...
   // PM.add(createMachineFunctionPrinterPass());