summaryrefslogtreecommitdiff
path: root/compiler/optimizing/optimization.cc
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/optimizing/optimization.cc')
-rw-r--r--compiler/optimizing/optimization.cc8
1 files changed, 8 insertions, 0 deletions
diff --git a/compiler/optimizing/optimization.cc b/compiler/optimizing/optimization.cc
index ef1f36ab08..bd8fbdf1d2 100644
--- a/compiler/optimizing/optimization.cc
+++ b/compiler/optimizing/optimization.cc
@@ -55,6 +55,7 @@
#include "licm.h"
#include "load_store_elimination.h"
#include "loop_optimization.h"
+#include "reference_type_propagation.h"
#include "scheduler.h"
#include "select_generator.h"
#include "sharpening.h"
@@ -98,6 +99,8 @@ const char* OptimizationPassName(OptimizationPass pass) {
return CodeSinking::kCodeSinkingPassName;
case OptimizationPass::kConstructorFenceRedundancyElimination:
return ConstructorFenceRedundancyElimination::kCFREPassName;
+ case OptimizationPass::kReferenceTypePropagation:
+ return ReferenceTypePropagation::kReferenceTypePropagationPassName;
case OptimizationPass::kScheduling:
return HInstructionScheduling::kInstructionSchedulingPassName;
case OptimizationPass::kWriteBarrierElimination:
@@ -154,6 +157,7 @@ OptimizationPass OptimizationPassByName(const std::string& pass_name) {
X(OptimizationPass::kInvariantCodeMotion);
X(OptimizationPass::kLoadStoreElimination);
X(OptimizationPass::kLoopOptimization);
+ X(OptimizationPass::kReferenceTypePropagation);
X(OptimizationPass::kScheduling);
X(OptimizationPass::kSelectGenerator);
X(OptimizationPass::kSideEffectsAnalysis);
@@ -287,6 +291,10 @@ ArenaVector<HOptimization*> ConstructOptimizations(
case OptimizationPass::kLoadStoreElimination:
opt = new (allocator) LoadStoreElimination(graph, stats, pass_name);
break;
+ case OptimizationPass::kReferenceTypePropagation:
+ opt = new (allocator) ReferenceTypePropagation(
+ graph, dex_compilation_unit.GetDexCache(), /* is_first_run= */ false, pass_name);
+ break;
case OptimizationPass::kWriteBarrierElimination:
opt = new (allocator) WriteBarrierElimination(graph, stats, pass_name);
break;