diff options
author | 2015-10-29 22:47:39 +0000 | |
---|---|---|
committer | 2015-10-29 22:47:39 +0000 | |
commit | 771e5cc519665ce0cc76985bb4803f0dd50c3b40 (patch) | |
tree | 2f6934bc6cb0286d327b7a653be410cf8df43c00 /compiler/optimizing/optimizing_compiler.cc | |
parent | 39fabd6bb6fcf7a712b370d3b6fd0ada83e2e5d8 (diff) |
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
Diffstat (limited to 'compiler/optimizing/optimizing_compiler.cc')
-rw-r--r-- | compiler/optimizing/optimizing_compiler.cc | 56 |
1 files changed, 34 insertions, 22 deletions
diff --git a/compiler/optimizing/optimizing_compiler.cc b/compiler/optimizing/optimizing_compiler.cc index 98acc34378..6632f95ebe 100644 --- a/compiler/optimizing/optimizing_compiler.cc +++ b/compiler/optimizing/optimizing_compiler.cc @@ -494,30 +494,42 @@ static void RunOptimizations(HGraph* graph, // 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); } |