diff options
Diffstat (limited to 'compiler/optimizing/optimization.cc')
-rw-r--r-- | compiler/optimizing/optimization.cc | 38 |
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: |