Constant fold after inlining.

- Inlining opens up new opportunities for constant folding.
- Fix a bug in constant folder where the result type was not
  correctly set for the folding of a HCompare.
- Improve graph checker's coverage.

Change-Id: I0943bf8ff65505c4addc4a555a526b55e00b5268
diff --git a/compiler/optimizing/optimizing_compiler.cc b/compiler/optimizing/optimizing_compiler.cc
index 6056373..ad48198 100644
--- a/compiler/optimizing/optimizing_compiler.cc
+++ b/compiler/optimizing/optimizing_compiler.cc
@@ -208,11 +208,12 @@
   SsaRedundantPhiElimination redundant_phi(graph);
   SsaDeadPhiElimination dead_phi(graph);
   HDeadCodeElimination dce(graph);
-  HConstantFolding fold(graph);
+  HConstantFolding fold1(graph);
   InstructionSimplifier simplify1(graph);
 
   HInliner inliner(graph, dex_compilation_unit, driver, stats);
 
+  HConstantFolding fold2(graph);
   GVNOptimization gvn(graph);
   BoundsCheckElimination bce(graph);
   InstructionSimplifier simplify2(graph);
@@ -224,9 +225,10 @@
     &dead_phi,
     &intrinsics,
     &dce,
-    &fold,
+    &fold1,
     &simplify1,
     &inliner,
+    &fold2,
     &gvn,
     &bce,
     &simplify2