aboutsummaryrefslogtreecommitdiff
path: root/backend/lib/CodeGen/MachineOptimizationPipeline.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'backend/lib/CodeGen/MachineOptimizationPipeline.cpp')
-rw-r--r--backend/lib/CodeGen/MachineOptimizationPipeline.cpp17
1 files changed, 8 insertions, 9 deletions
diff --git a/backend/lib/CodeGen/MachineOptimizationPipeline.cpp b/backend/lib/CodeGen/MachineOptimizationPipeline.cpp
index 4a9d7f5..dc64b8f 100644
--- a/backend/lib/CodeGen/MachineOptimizationPipeline.cpp
+++ b/backend/lib/CodeGen/MachineOptimizationPipeline.cpp
@@ -72,10 +72,6 @@ Expected<void> addPreRegisterAllocationOptimizationPipeline(
auto Added = addPass<MachineBranchOptimizationPass>(Pipeline, TargetInfo.InstrInfo);
if (!Added)
return std::unexpected(Added.error());
- Added = addPass<MachineCopyPropagationPass>(Pipeline, TargetInfo.InstrInfo,
- MachineCopyPropagationStage::PreRegisterAllocation);
- if (!Added)
- return std::unexpected(Added.error());
Added = addPass<MachineCombinerPass>(Pipeline, TargetInfo.Combiner,
MachineCombinerStage::PreRegisterAllocation);
if (!Added)
@@ -88,14 +84,11 @@ Expected<void> addPreRegisterAllocationOptimizationPipeline(
Expected<void>
addPostRegisterAllocationPipeline(MachineFunctionPassManager &Pipeline,
- const MachineOptimizationPipelineTargetInfo &TargetInfo) {
+ const MachineOptimizationPipelineTargetInfo &TargetInfo,
+ MachineOptimizationPipelineOptions Options) {
auto Added = addPass<MachineStackSlotColoringPass>(Pipeline);
if (!Added)
return std::unexpected(Added.error());
- Added = addPass<MachineCopyPropagationPass>(Pipeline, TargetInfo.InstrInfo,
- MachineCopyPropagationStage::PostRegisterAllocation);
- if (!Added)
- return std::unexpected(Added.error());
Added = addPass<MachineCombinerPass>(Pipeline, TargetInfo.Combiner,
MachineCombinerStage::PostRegisterAllocation);
if (!Added)
@@ -140,6 +133,12 @@ addPostRegisterAllocationPipeline(MachineFunctionPassManager &Pipeline,
Added = addPass<MachineFallthroughPass>(Pipeline, TargetInfo.InstrInfo);
if (!Added)
return std::unexpected(Added.error());
+ Added = addPass<MachineCopyPropagationPass>(
+ Pipeline, TargetInfo.InstrInfo,
+ MachineCopyPropagationOptions{.UseTargetCopyInstructions =
+ Options.UseTargetCopyInstructions});
+ if (!Added)
+ return std::unexpected(Added.error());
Added = addPass<MachineBranchRelaxationPass>(Pipeline, TargetInfo.InstrInfo);
if (!Added)
return std::unexpected(Added.error());