diff options
author | 2015-06-18 15:46:47 +0100 | |
---|---|---|
committer | 2015-06-18 15:53:02 +0100 | |
commit | b2bdfce7f805b00668a2521b1c939a0aafb2be49 (patch) | |
tree | 0c8aba9022fe62a176254b8459b414e9703f890f /compiler/optimizing/optimizing_compiler.cc | |
parent | d4de42f6fd0f00c5b3ca01fed6a26d11e617c3b9 (diff) |
Run a simplification pass before code generation.
The code generators assume things that only the instruction
simplier ensures. So it has to be run last in case previous
optimiziations broke those assumptions.
bug:21865464
Change-Id: I1f84016017bf691c2a34982e202a505b269f609a
Diffstat (limited to 'compiler/optimizing/optimizing_compiler.cc')
-rw-r--r-- | compiler/optimizing/optimizing_compiler.cc | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/compiler/optimizing/optimizing_compiler.cc b/compiler/optimizing/optimizing_compiler.cc index c695abea14..8d43adaada 100644 --- a/compiler/optimizing/optimizing_compiler.cc +++ b/compiler/optimizing/optimizing_compiler.cc @@ -340,9 +340,11 @@ static void RunOptimizations(HGraph* graph, InstructionSimplifier* simplify2 = new (arena) InstructionSimplifier( graph, stats, "instruction_simplifier_after_types"); InstructionSimplifier* simplify3 = new (arena) InstructionSimplifier( - graph, stats, "last_instruction_simplifier"); + graph, stats, "instruction_simplifier_after_bce"); ReferenceTypePropagation* type_propagation2 = new (arena) ReferenceTypePropagation(graph, handles); + InstructionSimplifier* simplify4 = new (arena) InstructionSimplifier( + graph, stats, "instruction_simplifier_before_codegen"); IntrinsicsRecognizer* intrinsics = new (arena) IntrinsicsRecognizer(graph, driver); @@ -367,6 +369,10 @@ static void RunOptimizations(HGraph* graph, bce, simplify3, 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(optimizations, arraysize(optimizations), pass_info_printer); |