diff options
Diffstat (limited to 'backend/lib/CodeGen/MachineOptimizationPipeline.cpp')
| -rw-r--r-- | backend/lib/CodeGen/MachineOptimizationPipeline.cpp | 17 |
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()); |
