summaryrefslogtreecommitdiff
path: root/compiler/optimizing/optimization.cc
diff options
context:
space:
mode:
author Santiago Aboy Solanes <solanes@google.com> 2023-04-18 15:16:06 +0100
committer Santiago Aboy Solanes <solanes@google.com> 2023-04-19 15:31:53 +0000
commit5eb1fd0dae3832ceee2102613bb08c291daca6f3 (patch)
treeda074eb8ea773b594a455fa9cd7ddde21d8f885b /compiler/optimizing/optimization.cc
parent2ff7fcccdeb2100cb5a3cc5314411fd23dd5f7c9 (diff)
Restrict the use of ConstantFolding's VisitIf
It was taking a lot of time for the improvement it got. We can get 99.99% of the improvement, with only one VisitIf call. This is roughly 20% of the compile time it used to take. Bug: 278626992 Fixes: 278626992 Test: art/test/testrunner/testrunner.py --host --64 --optimizing -b Change-Id: Icc00c9ad6a9eb4f4fd18677bcb65655cbbe9d027
Diffstat (limited to 'compiler/optimizing/optimization.cc')
-rw-r--r--compiler/optimizing/optimization.cc5
1 files changed, 5 insertions, 0 deletions
diff --git a/compiler/optimizing/optimization.cc b/compiler/optimizing/optimization.cc
index e1b97b4aac..12e9a1046d 100644
--- a/compiler/optimizing/optimization.cc
+++ b/compiler/optimizing/optimization.cc
@@ -77,6 +77,7 @@ const char* OptimizationPassName(OptimizationPass pass) {
return BoundsCheckElimination::kBoundsCheckEliminationPassName;
case OptimizationPass::kLoadStoreElimination:
return LoadStoreElimination::kLoadStoreEliminationPassName;
+ case OptimizationPass::kAggressiveConstantFolding:
case OptimizationPass::kConstantFolding:
return HConstantFolding::kConstantFoldingPassName;
case OptimizationPass::kDeadCodeElimination:
@@ -227,6 +228,10 @@ ArenaVector<HOptimization*> ConstructOptimizations(
case OptimizationPass::kConstantFolding:
opt = new (allocator) HConstantFolding(graph, stats, pass_name);
break;
+ case OptimizationPass::kAggressiveConstantFolding:
+ opt = new (allocator)
+ HConstantFolding(graph, stats, pass_name, /* use_all_optimizations_ = */ true);
+ break;
case OptimizationPass::kDeadCodeElimination:
opt = new (allocator) HDeadCodeElimination(graph, stats, pass_name);
break;