Reg promotion fix; full optimization by default

As anticipated, the register promotion problem was related to type
inference.  The Dalvik bytecode definition doesn't explicitly carry
type information on some opcodes.  The problem this time was that
invoke results are stored in a magic untyped return location, which is
later accesses via (also untyped) OP_MOVE_RESULT.

Most of the time, the existing type inference mechanism was able to
figure out the result register type, but there was a pattern in which
it could be missed.  Fixed (the last type inference bug, I hope).

This CL also re-enables full optimization by default (which will also
result in a quite significant reduction in code size).

Change-Id: I4c13455df7eba5c932e2cc7907b00c8b3b2f85b8
diff --git a/src/compiler/Frontend.cc b/src/compiler/Frontend.cc
index ba5bd3d..5855341 100644
--- a/src/compiler/Frontend.cc
+++ b/src/compiler/Frontend.cc
@@ -28,8 +28,8 @@
      //(1 << kLoadHoisting) |
      //(1 << kSuppressLoads) |
      //(1 << kNullCheckElimination) |
-     (1 << kPromoteRegs) |
-     (1 << kTrackLiveTemps) |
+     //(1 << kPromoteRegs) |
+     //(1 << kTrackLiveTemps) |
      0;
 
 uint32_t compilerDebugFlags = 0 |     // Enable debug/testing modes