summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorHal Finkel <hfinkel@anl.gov>2013-01-29 00:22:49 +0000
committerHal Finkel <hfinkel@anl.gov>2013-01-29 00:22:49 +0000
commitbf4db4fe1194560d99d5b968d1478789a610e71f (patch)
tree6611fd4b439d8041a6a909a2fbbaa0350a19be44 /llvm/lib
parent7f9e8d3eaaffeb711a5e9e4844622842525b8eb2 (diff)
downloadbcm5719-llvm-bf4db4fe1194560d99d5b968d1478789a610e71f.tar.gz
bcm5719-llvm-bf4db4fe1194560d99d5b968d1478789a610e71f.zip
Unroll again after running BBVectorize
Because BBVectorize may significantly shorten a loop body, unroll again after vectorization. This is especially important when using runtime or partial unrolling. llvm-svn: 173730
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Transforms/IPO/PassManagerBuilder.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp b/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp
index 6dc17737785..47b2b51899c 100644
--- a/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp
+++ b/llvm/lib/Transforms/IPO/PassManagerBuilder.cpp
@@ -214,6 +214,10 @@ void PassManagerBuilder::populateModulePassManager(PassManagerBase &MPM) {
MPM.add(createGVNPass()); // Remove redundancies
else
MPM.add(createEarlyCSEPass()); // Catch trivial redundancies
+
+ // BBVectorize may have significantly shortened a loop body; unroll again.
+ if (!DisableUnrollLoops)
+ MPM.add(createLoopUnrollPass());
}
MPM.add(createAggressiveDCEPass()); // Delete dead instructions
OpenPOWER on IntegriCloud