summaryrefslogtreecommitdiff
path: root/compiler/optimizing
diff options
context:
space:
mode:
author Santiago Aboy Solanes <solanes@google.com> 2023-02-03 17:14:59 +0000
committer Santiago Aboy Solanes <solanes@google.com> 2023-02-08 13:40:37 +0000
commitec45c7711c3a416660c98e96147fc94c2c6b34b8 (patch)
treeb21288000488913536b9fe98b58fb81d6b97abfe /compiler/optimizing
parent86b5f86d8dbf069084e7534e25f8faf4d879828b (diff)
Unify simplification passes after high-level optimizations
* Add a constant folding pass after the later high-level optimizations * Remove dead_code_elimination$after_lse to unify simplification passes (always constant folding, instruction simplifier, dead code elimination) * Make dead_code_elimination$before_codegen run always. Locally speed compile Pixel 5: * system server -64.28KB (-0.13%) * SystemUIGoogle: -16.31KB (-0.06%) * AGSA: -140.57 (-0.04%) Test: art/test/testrunner/testrunner.py --host --64 --optimizing -b Change-Id: I305877fd83471dff059fe1d4f5b98e5b1063f1a5
Diffstat (limited to 'compiler/optimizing')
-rw-r--r--compiler/optimizing/optimization.h2
-rw-r--r--compiler/optimizing/optimizing_compiler.cc15
2 files changed, 8 insertions, 9 deletions
diff --git a/compiler/optimizing/optimization.h b/compiler/optimizing/optimization.h
index c3ba17563e..2ef21b3ccc 100644
--- a/compiler/optimizing/optimization.h
+++ b/compiler/optimizing/optimization.h
@@ -43,7 +43,7 @@ class HOptimization : public ArenaObject<kArenaAllocOptimization> {
// Return the name of the pass. Pass names for a single HOptimization should be of form
// <optimization_name> or <optimization_name>$<pass_name> for common <optimization_name> prefix.
- // Example: 'instruction_simplifier', 'instruction_simplifier$after_bce',
+ // Example: 'instruction_simplifier', 'instruction_simplifier$before_codegen',
// 'instruction_simplifier$before_codegen'.
const char* GetPassName() const { return pass_name_; }
diff --git a/compiler/optimizing/optimizing_compiler.cc b/compiler/optimizing/optimizing_compiler.cc
index db39ff98c3..60d5e6f3bd 100644
--- a/compiler/optimizing/optimizing_compiler.cc
+++ b/compiler/optimizing/optimizing_compiler.cc
@@ -671,18 +671,18 @@ void OptimizingCompiler::RunOptimizations(HGraph* graph,
OptDef(OptimizationPass::kLoopOptimization),
// Simplification.
OptDef(OptimizationPass::kConstantFolding,
- "constant_folding$after_bce"),
+ "constant_folding$after_loop_opt"),
OptDef(OptimizationPass::kAggressiveInstructionSimplifier,
- "instruction_simplifier$after_bce"),
+ "instruction_simplifier$after_loop_opt"),
OptDef(OptimizationPass::kDeadCodeElimination,
- "dead_code_elimination$after_bce"),
+ "dead_code_elimination$after_loop_opt"),
// Other high-level optimizations.
OptDef(OptimizationPass::kLoadStoreElimination),
- OptDef(OptimizationPass::kDeadCodeElimination,
- "dead_code_elimination$after_lse",
- OptimizationPass::kLoadStoreElimination),
OptDef(OptimizationPass::kCHAGuardOptimization),
OptDef(OptimizationPass::kCodeSinking),
+ // Simplification.
+ OptDef(OptimizationPass::kConstantFolding,
+ "constant_folding$before_codegen"),
// 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.
@@ -691,8 +691,7 @@ void OptimizingCompiler::RunOptimizations(HGraph* graph,
// Simplification may result in dead code that should be removed prior to
// code generation.
OptDef(OptimizationPass::kDeadCodeElimination,
- "dead_code_elimination$before_codegen",
- OptimizationPass::kAggressiveInstructionSimplifier),
+ "dead_code_elimination$before_codegen"),
// Eliminate constructor fences after code sinking to avoid
// complicated sinking logic to split a fence with many inputs.
OptDef(OptimizationPass::kConstructorFenceRedundancyElimination)