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.cc38
1 files changed, 29 insertions, 9 deletions
diff --git a/compiler/optimizing/optimization.cc b/compiler/optimizing/optimization.cc
index 12e9a1046d..ef1f36ab08 100644
--- a/compiler/optimizing/optimization.cc
+++ b/compiler/optimizing/optimization.cc
@@ -23,6 +23,10 @@
#ifdef ART_ENABLE_CODEGEN_arm64
#include "instruction_simplifier_arm64.h"
#endif
+#ifdef ART_ENABLE_CODEGEN_riscv64
+#include "critical_native_abi_fixup_riscv64.h"
+#include "instruction_simplifier_riscv64.h"
+#endif
#ifdef ART_ENABLE_CODEGEN_x86
#include "pc_relative_fixups_x86.h"
#include "instruction_simplifier_x86.h"
@@ -77,7 +81,6 @@ 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:
@@ -109,6 +112,12 @@ const char* OptimizationPassName(OptimizationPass pass) {
case OptimizationPass::kInstructionSimplifierArm64:
return arm64::InstructionSimplifierArm64::kInstructionSimplifierArm64PassName;
#endif
+#ifdef ART_ENABLE_CODEGEN_riscv64
+ case OptimizationPass::kCriticalNativeAbiFixupRiscv64:
+ return riscv64::CriticalNativeAbiFixupRiscv64::kCriticalNativeAbiFixupRiscv64PassName;
+ case OptimizationPass::kInstructionSimplifierRiscv64:
+ return riscv64::InstructionSimplifierRiscv64::kInstructionSimplifierRiscv64PassName;
+#endif
#ifdef ART_ENABLE_CODEGEN_x86
case OptimizationPass::kPcRelativeFixupsX86:
return x86::PcRelativeFixups::kPcRelativeFixupsX86PassName;
@@ -155,6 +164,10 @@ OptimizationPass OptimizationPassByName(const std::string& pass_name) {
#ifdef ART_ENABLE_CODEGEN_arm64
X(OptimizationPass::kInstructionSimplifierArm64);
#endif
+#ifdef ART_ENABLE_CODEGEN_riscv64
+ X(OptimizationPass::kCriticalNativeAbiFixupRiscv64);
+ X(OptimizationPass::kInstructionSimplifierRiscv64);
+#endif
#ifdef ART_ENABLE_CODEGEN_x86
X(OptimizationPass::kPcRelativeFixupsX86);
X(OptimizationPass::kX86MemoryOperandGeneration);
@@ -228,10 +241,6 @@ 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;
@@ -247,6 +256,7 @@ ArenaVector<HOptimization*> ConstructOptimizations(
accessor.RegistersSize(),
/* total_number_of_instructions= */ 0,
/* parent= */ nullptr,
+ /* caller_environment= */ nullptr,
/* depth= */ 0,
/* try_catch_inlining_allowed= */ true,
pass_name);
@@ -290,7 +300,7 @@ ArenaVector<HOptimization*> ConstructOptimizations(
#ifdef ART_ENABLE_CODEGEN_arm
case OptimizationPass::kInstructionSimplifierArm:
DCHECK(alt_name == nullptr) << "arch-specific pass does not support alternative name";
- opt = new (allocator) arm::InstructionSimplifierArm(graph, stats);
+ opt = new (allocator) arm::InstructionSimplifierArm(graph, codegen, stats);
break;
case OptimizationPass::kCriticalNativeAbiFixupArm:
DCHECK(alt_name == nullptr) << "arch-specific pass does not support alternative name";
@@ -300,7 +310,17 @@ ArenaVector<HOptimization*> ConstructOptimizations(
#ifdef ART_ENABLE_CODEGEN_arm64
case OptimizationPass::kInstructionSimplifierArm64:
DCHECK(alt_name == nullptr) << "arch-specific pass does not support alternative name";
- opt = new (allocator) arm64::InstructionSimplifierArm64(graph, stats);
+ opt = new (allocator) arm64::InstructionSimplifierArm64(graph, codegen, stats);
+ break;
+#endif
+#ifdef ART_ENABLE_CODEGEN_riscv64
+ case OptimizationPass::kCriticalNativeAbiFixupRiscv64:
+ DCHECK(alt_name == nullptr) << "arch-specific pass does not support alternative name";
+ opt = new (allocator) riscv64::CriticalNativeAbiFixupRiscv64(graph, stats);
+ break;
+ case OptimizationPass::kInstructionSimplifierRiscv64:
+ DCHECK(alt_name == nullptr) << "arch-specific pass does not support alternative name";
+ opt = new (allocator) riscv64::InstructionSimplifierRiscv64(graph, stats);
break;
#endif
#ifdef ART_ENABLE_CODEGEN_x86
@@ -313,8 +333,8 @@ ArenaVector<HOptimization*> ConstructOptimizations(
opt = new (allocator) x86::X86MemoryOperandGeneration(graph, codegen, stats);
break;
case OptimizationPass::kInstructionSimplifierX86:
- opt = new (allocator) x86::InstructionSimplifierX86(graph, codegen, stats);
- break;
+ opt = new (allocator) x86::InstructionSimplifierX86(graph, codegen, stats);
+ break;
#endif
#ifdef ART_ENABLE_CODEGEN_x86_64
case OptimizationPass::kInstructionSimplifierX86_64: