Post regalloc LICM. Work in progress.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100592 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/CodeGen/LLVMTargetMachine.cpp b/lib/CodeGen/LLVMTargetMachine.cpp
index ed57f4c..ced6664 100644
--- a/lib/CodeGen/LLVMTargetMachine.cpp
+++ b/lib/CodeGen/LLVMTargetMachine.cpp
@@ -66,6 +66,9 @@
     cl::desc("Verify generated machine code"),
     cl::init(getenv("LLVM_VERIFY_MACHINEINSTRS")!=NULL));
 
+static cl::opt<bool> PostRAMachineLICM("postra-machine-licm", cl::Hidden,
+    cl::desc("Enable post-regalloc Machine LICM"));
+
 static cl::opt<cl::boolOrDefault>
 AsmVerbose("asm-verbose", cl::desc("Add comments to directives."),
            cl::init(cl::BOU_UNSET));
@@ -343,6 +346,10 @@
     // kill markers.
     PM.add(createStackSlotColoringPass(false));
     printAndVerify(PM, "After StackSlotColoring");
+
+    // Run post-ra machine LICM to hoist reloads / remats.
+    if (PostRAMachineLICM)
+      PM.add(createMachineLICMPass(false));
   }
 
   // Run post-ra passes.