Enable the rest of branch fusing

I mistakenly left most of the branch fusing cases disabled in
the previous CL.  This CL turns them all on, along with a fix
for the bug I was chasing while disabling them in the first
place.

Change-Id: Ia60f7fe5394a5da08ed75bbff39b47ae9497a61c
diff --git a/src/compiler/Dataflow.cc b/src/compiler/Dataflow.cc
index 5f632c0..bea5ef0 100644
--- a/src/compiler/Dataflow.cc
+++ b/src/compiler/Dataflow.cc
@@ -1869,19 +1869,19 @@
                             ccode = kCondEq;
                             break;
                         case Instruction::IF_NEZ:
-                           // ccode = kCondNe;
+                            ccode = kCondNe;
                             break;
                         case Instruction::IF_LTZ:
-                            // ccode = kCondLt;
+                            ccode = kCondLt;
                             break;
                         case Instruction::IF_GEZ:
-                            // ccode = kCondGe;
+                            ccode = kCondGe;
                             break;
                         case Instruction::IF_GTZ:
-                            // ccode = kCondGt;
+                            ccode = kCondGt;
                             break;
                         case Instruction::IF_LEZ:
-                            // ccode = kCondLe;
+                            ccode = kCondLe;
                             break;
                         default:
                             break;
diff --git a/src/compiler/codegen/MethodCodegenDriver.cc b/src/compiler/codegen/MethodCodegenDriver.cc
index 1dc11da..fb9bdc9 100644
--- a/src/compiler/codegen/MethodCodegenDriver.cc
+++ b/src/compiler/codegen/MethodCodegenDriver.cc
@@ -737,9 +737,6 @@
 
 const char* extendedMIROpNames[kMirOpLast - kMirOpFirst] = {
     "kMirOpPhi",
-    "kMirOpNullNRangeUpCheck",
-    "kMirOpNullNRangeDownCheck",
-    "kMirOpLowerBound",
     "kMirOpCopy",
     "kMirFusedCmplFloat",
     "kMirFusedCmpgFloat",
@@ -747,6 +744,9 @@
     "kMirFusedCmpgDouble",
     "kMirFusedCmpLong",
     "kMirNop",
+    "kMirOpNullNRangeUpCheck",
+    "kMirOpNullNRangeDownCheck",
+    "kMirOpLowerBound",
 };
 
 /* Extended MIR instructions like PHI */
diff --git a/src/compiler/codegen/arm/Thumb2/Gen.cc b/src/compiler/codegen/arm/Thumb2/Gen.cc
index ea02ca9..f485403 100644
--- a/src/compiler/codegen/arm/Thumb2/Gen.cc
+++ b/src/compiler/codegen/arm/Thumb2/Gen.cc
@@ -658,12 +658,12 @@
 {
     LIR* labelList = (LIR*)cUnit->blockLabelList;
     LIR* taken = &labelList[bb->taken->id];
+    LIR* notTaken = &labelList[bb->fallThrough->id];
     RegLocation rlSrc1 = oatGetSrcWide(cUnit, mir, 0, 1);
     RegLocation rlSrc2 = oatGetSrcWide(cUnit, mir, 2, 3);
     rlSrc1 = loadValueWide(cUnit, rlSrc1, kCoreReg);
     rlSrc2 = loadValueWide(cUnit, rlSrc2, kCoreReg);
     ConditionCode ccode = static_cast<ConditionCode>(mir->dalvikInsn.arg[0]);
-    LIR* notTaken = rawLIR(cUnit, mir->offset, kPseudoTargetLabel);
     opRegReg(cUnit, kOpCmp, rlSrc1.highReg, rlSrc2.highReg);
     switch(ccode) {
         case kCondEq:
@@ -675,25 +675,28 @@
         case kCondLt:
             opCondBranch(cUnit, kCondLt, taken);
             opCondBranch(cUnit, kCondGt, notTaken);
+            ccode = kCondCc;
             break;
         case kCondLe:
             opCondBranch(cUnit, kCondLt, taken);
             opCondBranch(cUnit, kCondGt, notTaken);
+            ccode = kCondLs;
             break;
         case kCondGt:
             opCondBranch(cUnit, kCondGt, taken);
             opCondBranch(cUnit, kCondLt, notTaken);
+            ccode = kCondHi;
             break;
         case kCondGe:
             opCondBranch(cUnit, kCondGt, taken);
             opCondBranch(cUnit, kCondLt, notTaken);
+            ccode = kCondCs;
             break;
         default:
             LOG(FATAL) << "Unexpected ccode: " << (int)ccode;
     }
     opRegReg(cUnit, kOpCmp, rlSrc1.lowReg, rlSrc2.lowReg);
     opCondBranch(cUnit, ccode, taken);
-    oatAppendLIR(cUnit, notTaken);
 }
 
 /*