Run LSA as a part of the LSE pass.
Make LSA a helper class, not an optimization pass. Move all
its allocations to ScopedArenaAllocator to reduce the peak
memory usage a little bit.
Test: m test-art-host-gtest
Test: testrunner.py --host --optimizing
Change-Id: I7fc634abe732d22c99005921ffecac5207bcf05f
diff --git a/compiler/optimizing/optimization.cc b/compiler/optimizing/optimization.cc
index 7483190..ec3b8c4 100644
--- a/compiler/optimizing/optimization.cc
+++ b/compiler/optimizing/optimization.cc
@@ -48,7 +48,6 @@
#include "instruction_simplifier.h"
#include "intrinsics.h"
#include "licm.h"
-#include "load_store_analysis.h"
#include "load_store_elimination.h"
#include "loop_optimization.h"
#include "scheduler.h"
@@ -66,8 +65,6 @@
return SideEffectsAnalysis::kSideEffectsAnalysisPassName;
case OptimizationPass::kInductionVarAnalysis:
return HInductionVarAnalysis::kInductionPassName;
- case OptimizationPass::kLoadStoreAnalysis:
- return LoadStoreAnalysis::kLoadStoreAnalysisPassName;
case OptimizationPass::kGlobalValueNumbering:
return GVNOptimization::kGlobalValueNumberingPassName;
case OptimizationPass::kInvariantCodeMotion:
@@ -138,7 +135,6 @@
X(OptimizationPass::kInliner);
X(OptimizationPass::kInstructionSimplifier);
X(OptimizationPass::kInvariantCodeMotion);
- X(OptimizationPass::kLoadStoreAnalysis);
X(OptimizationPass::kLoadStoreElimination);
X(OptimizationPass::kLoopOptimization);
X(OptimizationPass::kScheduling);
@@ -175,7 +171,6 @@
// name list or fails fatally if no such analysis can be found.
SideEffectsAnalysis* most_recent_side_effects = nullptr;
HInductionVarAnalysis* most_recent_induction = nullptr;
- LoadStoreAnalysis* most_recent_lsa = nullptr;
// Loop over the requested optimizations.
for (size_t i = 0; i < length; i++) {
@@ -196,9 +191,6 @@
case OptimizationPass::kInductionVarAnalysis:
opt = most_recent_induction = new (allocator) HInductionVarAnalysis(graph, pass_name);
break;
- case OptimizationPass::kLoadStoreAnalysis:
- opt = most_recent_lsa = new (allocator) LoadStoreAnalysis(graph, pass_name);
- break;
//
// Passes that need prior analysis.
//
@@ -223,7 +215,7 @@
case OptimizationPass::kLoadStoreElimination:
CHECK(most_recent_side_effects != nullptr && most_recent_induction != nullptr);
opt = new (allocator) LoadStoreElimination(
- graph, *most_recent_side_effects, *most_recent_lsa, stats, pass_name);
+ graph, *most_recent_side_effects, stats, pass_name);
break;
//
// Regular passes.