diff options
| author | James Molloy <james.molloy@arm.com> | 2016-01-14 15:00:09 +0000 |
|---|---|---|
| committer | James Molloy <james.molloy@arm.com> | 2016-01-14 15:00:09 +0000 |
| commit | 31f3ddd589367a4dff747983758b4b81cdc44634 (patch) | |
| tree | 2591c7770236e31768d00bac857db6e6a55b9bf8 /llvm/lib/Transforms | |
| parent | fc1f7d893ef9127bf0580f86819999302a4f78b2 (diff) | |
| download | bcm5719-llvm-31f3ddd589367a4dff747983758b4b81cdc44634.tar.gz bcm5719-llvm-31f3ddd589367a4dff747983758b4b81cdc44634.zip | |
[LTO] Add a run of LoopUnroll
Loop trip counts can often be resolved during LTO. We should obviously be unrolling small loops once those trip counts have been resolved, but we weren't.
llvm-svn: 257767
Diffstat (limited to 'llvm/lib/Transforms')
| -rw-r--r-- | llvm/lib/Transforms/IPO/PassManagerBuilder.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp b/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp index faada9c2a7d..b5b948b3001 100644 --- a/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp +++ b/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp @@ -573,7 +573,12 @@ void PassManagerBuilder::addLTOOptimizationPasses(legacy::PassManagerBase &PM) { if (EnableLoopInterchange) PM.add(createLoopInterchangePass()); + if (!DisableUnrollLoops) + PM.add(createSimpleLoopUnrollPass()); // Unroll small loops PM.add(createLoopVectorizePass(true, LoopVectorize)); + // The vectorizer may have significantly shortened a loop body; unroll again. + if (!DisableUnrollLoops) + PM.add(createLoopUnrollPass()); // Now that we've optimized loops (in particular loop induction variables), // we may have exposed more scalar opportunities. Run parts of the scalar |

