Revert "CFG rework for explicit exception edges"

This reverts commit 8b503db0432981c6b0b2271723f9bcf9448a554a.

Change-Id: I21d5255d827c63de6a229ef419f372fbcf4d16ed
diff --git a/src/compiler/Ralloc.cc b/src/compiler/Ralloc.cc
index f4e735a..500b1b2 100644
--- a/src/compiler/Ralloc.cc
+++ b/src/compiler/Ralloc.cc
@@ -89,6 +89,20 @@
   return false;
 }
 
+// Try to find the next move result which might have an FP target
+SSARepresentation* findFPMoveResult(MIR* mir)
+{
+  SSARepresentation* res = NULL;
+  for (; mir; mir = mir->next) {
+    if ((mir->dalvikInsn.opcode == Instruction::MOVE_RESULT) ||
+        (mir->dalvikInsn.opcode == Instruction::MOVE_RESULT_WIDE)) {
+      res = mir->ssaRep;
+      break;
+    }
+  }
+  return res;
+}
+
 /*
  * Infer types and sizes.  We don't need to track change on sizes,
  * as it doesn't propagate.  We're guaranteed at least one pass through
@@ -222,12 +236,14 @@
         const char* shorty = oatGetShortyFromTargetIdx(cUnit, target_idx);
         // Handle result type if floating point
         if ((shorty[0] == 'F') || (shorty[0] == 'D')) {
-          MIR* moveResultMIR = oatFindMoveResult(cUnit, bb, mir);
+          // Find move-result that consumes this result
+          SSARepresentation* tgtRep = findFPMoveResult(mir->next);
+          // Might be in next basic block
+          if (!tgtRep) {
+            tgtRep = findFPMoveResult(bb->fallThrough->firstMIRInsn);
+          }
           // Result might not be used at all, so no move-result
-          if (moveResultMIR && (moveResultMIR->dalvikInsn.opcode !=
-              Instruction::MOVE_RESULT_OBJECT)) {
-            SSARepresentation* tgtRep = moveResultMIR->ssaRep;
-            DCHECK(tgtRep != NULL);
+          if (tgtRep) {
             tgtRep->fpDef[0] = true;
             changed |= setFp(cUnit, tgtRep->defs[0], true);
             if (shorty[0] == 'D') {