Implement LICM in optimizing compiler.

Change-Id: I9c8afb0a58ef45e568576015473cbfd5f011c242
diff --git a/compiler/optimizing/optimizing_compiler.cc b/compiler/optimizing/optimizing_compiler.cc
index 705345b..50d7924 100644
--- a/compiler/optimizing/optimizing_compiler.cc
+++ b/compiler/optimizing/optimizing_compiler.cc
@@ -34,6 +34,7 @@
 #include "inliner.h"
 #include "instruction_simplifier.h"
 #include "intrinsics.h"
+#include "licm.h"
 #include "jni/quick/jni_compiler.h"
 #include "mirror/art_method-inl.h"
 #include "nodes.h"
@@ -225,6 +226,7 @@
   HConstantFolding fold2(graph);
   SideEffectsAnalysis side_effects(graph);
   GVNOptimization gvn(graph, side_effects);
+  LICM licm(graph, side_effects);
   BoundsCheckElimination bce(graph);
   ReferenceTypePropagation type_propagation(graph);
   InstructionSimplifier simplify2(graph, "instruction_simplifier_after_types");
@@ -242,6 +244,7 @@
     &fold2,
     &side_effects,
     &gvn,
+    &licm,
     &bce,
     &type_propagation,
     &simplify2