diff options
Diffstat (limited to 'lib/CodeGen/LLVMTargetMachine.cpp')
-rw-r--r-- | lib/CodeGen/LLVMTargetMachine.cpp | 33 |
1 files changed, 20 insertions, 13 deletions
diff --git a/lib/CodeGen/LLVMTargetMachine.cpp b/lib/CodeGen/LLVMTargetMachine.cpp index 62227fd4d6..7fd089a5db 100644 --- a/lib/CodeGen/LLVMTargetMachine.cpp +++ b/lib/CodeGen/LLVMTargetMachine.cpp @@ -452,23 +452,10 @@ bool LLVMTargetMachine::addCommonCodeGenPasses(PassManagerBase &PM, if (addPostRegAlloc(PM)) printAndVerify(PM, "After PostRegAlloc passes"); - PM.add(createExpandPostRAPseudosPass()); - printAndVerify(PM, "After ExpandPostRAPseudos"); - // Insert prolog/epilog code. Eliminate abstract frame index references... PM.add(createPrologEpilogCodeInserter()); printAndVerify(PM, "After PrologEpilogCodeInserter"); - // Run pre-sched2 passes. - if (addPreSched2(PM)) - printAndVerify(PM, "After PreSched2 passes"); - - // Second pass scheduler. - if (getOptLevel() != CodeGenOpt::None && !DisablePostRA) { - PM.add(createPostRAScheduler(getOptLevel())); - printAndVerify(PM, "After PostRAScheduler"); - } - // Branch folding must be run after regalloc and prolog/epilog insertion. if (getOptLevel() != CodeGenOpt::None && !DisableBranchFold) { PM.add(createBranchFoldingPass(getEnableTailMergeDefault())); @@ -481,6 +468,26 @@ bool LLVMTargetMachine::addCommonCodeGenPasses(PassManagerBase &PM, printNoVerify(PM, "After TailDuplicate"); } + // Copy propagation. + if (getOptLevel() != CodeGenOpt::None) { + PM.add(createMachineCopyPropagationPass()); + printNoVerify(PM, "After copy propagation pass"); + } + + // Expand pseudo instructions before second scheduling pass. + PM.add(createExpandPostRAPseudosPass()); + printNoVerify(PM, "After ExpandPostRAPseudos"); + + // Run pre-sched2 passes. + if (addPreSched2(PM)) + printNoVerify(PM, "After PreSched2 passes"); + + // Second pass scheduler. + if (getOptLevel() != CodeGenOpt::None && !DisablePostRA) { + PM.add(createPostRAScheduler(getOptLevel())); + printNoVerify(PM, "After PostRAScheduler"); + } + PM.add(createGCMachineCodeAnalysisPass()); if (PrintGCInfo) |