Revert "ART: Enable more passes under try/catch"

BCE does not set TryCatchInformation when creating new blocks.
Will be fixed with DynamicBCE CL.

This reverts commit 39fabd6bb6fcf7a712b370d3b6fd0ada83e2e5d8.

Change-Id: I76ae707ac132bb1a4a9f64f4916ffcd786ef730c
diff --git a/compiler/optimizing/licm.cc b/compiler/optimizing/licm.cc
index 27442d4..c38bbe3 100644
--- a/compiler/optimizing/licm.cc
+++ b/compiler/optimizing/licm.cc
@@ -122,9 +122,6 @@
           if (instruction->NeedsEnvironment()) {
             UpdateLoopPhisIn(instruction->GetEnvironment(), loop_info);
           }
-          // Move instruction into the pre header. Note that this cannot move
-          // a throwing instruction out of its try block since these are hoisted
-          // only from the header block (and TryBoundary would start a new block).
           instruction->MoveBefore(pre_header->GetLastInstruction());
         } else if (instruction->CanThrow()) {
           // If `instruction` can throw, we cannot move further instructions
diff --git a/compiler/optimizing/nodes.cc b/compiler/optimizing/nodes.cc
index 4345d55..3480265 100644
--- a/compiler/optimizing/nodes.cc
+++ b/compiler/optimizing/nodes.cc
@@ -1129,14 +1129,6 @@
 }
 
 void HInstruction::MoveBefore(HInstruction* cursor) {
-  if (kIsDebugBuild && CanThrowIntoCatchBlock()) {
-    // Make sure we are not moving a throwing instruction out of its try block.
-    DCHECK(cursor->GetBlock()->IsTryBlock());
-    const HTryBoundary& current_try = block_->GetTryCatchInformation()->GetTryEntry();
-    const HTryBoundary& cursor_try = cursor->GetBlock()->GetTryCatchInformation()->GetTryEntry();
-    DCHECK(cursor_try.HasSameExceptionHandlersAs(current_try));
-  }
-
   next_->previous_ = previous_;
   if (previous_ != nullptr) {
     previous_->next_ = next_;
diff --git a/compiler/optimizing/optimizing_compiler.cc b/compiler/optimizing/optimizing_compiler.cc
index 98acc34..6632f95 100644
--- a/compiler/optimizing/optimizing_compiler.cc
+++ b/compiler/optimizing/optimizing_compiler.cc
@@ -494,31 +494,43 @@
 
   // TODO: Update passes incompatible with try/catch so we have the same
   //       pipeline for all methods.
-  if (!graph->HasTryCatch()) {
+  if (graph->HasTryCatch()) {
+    HOptimization* optimizations2[] = {
+      side_effects,
+      gvn,
+      dce2,
+      // The codegen has a few assumptions that only the instruction simplifier
+      // can satisfy. For example, the code generator does not expect to see a
+      // HTypeConversion from a type to the same type.
+      simplify4,
+    };
+
+    RunOptimizations(optimizations2, arraysize(optimizations2), pass_observer);
+  } else {
     MaybeRunInliner(graph, codegen, driver, stats, dex_compilation_unit, pass_observer, handles);
+
+    HOptimization* optimizations2[] = {
+      // BooleanSimplifier depends on the InstructionSimplifier removing
+      // redundant suspend checks to recognize empty blocks.
+      boolean_simplify,
+      fold2,  // TODO: if we don't inline we can also skip fold2.
+      side_effects,
+      gvn,
+      licm,
+      induction,
+      bce,
+      simplify3,
+      lse,
+      dce2,
+      // The codegen has a few assumptions that only the instruction simplifier
+      // can satisfy. For example, the code generator does not expect to see a
+      // HTypeConversion from a type to the same type.
+      simplify4,
+    };
+
+    RunOptimizations(optimizations2, arraysize(optimizations2), pass_observer);
   }
 
-  HOptimization* optimizations2[] = {
-    // BooleanSimplifier depends on the InstructionSimplifier removing
-    // redundant suspend checks to recognize empty blocks.
-    boolean_simplify,
-    fold2,  // TODO: if we don't inline we can also skip fold2.
-    side_effects,
-    gvn,
-    licm,
-    induction,
-    bce,
-    simplify3,
-    lse,
-    dce2,
-    // The codegen has a few assumptions that only the instruction simplifier
-    // can satisfy. For example, the code generator does not expect to see a
-    // HTypeConversion from a type to the same type.
-    simplify4,
-  };
-
-  RunOptimizations(optimizations2, arraysize(optimizations2), pass_observer);
-
   RunArchOptimizations(driver->GetInstructionSet(), graph, stats, pass_observer);
 }