summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms
diff options
context:
space:
mode:
authorAndrew Trick <atrick@apple.com>2011-09-02 17:26:28 +0000
committerAndrew Trick <atrick@apple.com>2011-09-02 17:26:28 +0000
commit31b941a60dc0e2cb1598673c1d85e01d0df02ae6 (patch)
treee882c689416d1bfa41e401366f0650576c240330 /llvm/lib/Transforms
parentc302f5cce7fecb4a275e30a108b98e1dc83c57ec (diff)
downloadbcm5719-llvm-31b941a60dc0e2cb1598673c1d85e01d0df02ae6.tar.gz
bcm5719-llvm-31b941a60dc0e2cb1598673c1d85e01d0df02ae6.zip
Enable SCEV-based unrolling by default.
This changes loop unrolling to use the same mechanism for trip count computation as indvars. This is a stronger check that tends to unroll more loops. A very common side-effect is that many single iteration loops will be removed sooner. The real goal was simply to remove dependence on canonical IVs. x86 is break even. ARM performance changes to expect (+ is good): External/SPEC/CFP2000/183.equake/183.equake +13% SingleSource/Benchmarks/Dhrystone/fldry +21% MultiSource/Applications/spiff/spiff +3% SingleSource/Benchmarks/Stanford/Puzzle -14% The Puzzle regression is actually an improvement in loop optimization that defeats GVN: rdar://problem/10065079. llvm-svn: 139009
Diffstat (limited to 'llvm/lib/Transforms')
-rw-r--r--llvm/lib/Transforms/Scalar/LoopUnrollPass.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/llvm/lib/Transforms/Scalar/LoopUnrollPass.cpp b/llvm/lib/Transforms/Scalar/LoopUnrollPass.cpp
index dab3ac42eaf..cca7ba0bd4e 100644
--- a/llvm/lib/Transforms/Scalar/LoopUnrollPass.cpp
+++ b/llvm/lib/Transforms/Scalar/LoopUnrollPass.cpp
@@ -39,9 +39,9 @@ UnrollAllowPartial("unroll-allow-partial", cl::init(false), cl::Hidden,
cl::desc("Allows loops to be partially unrolled until "
"-unroll-threshold loop size is reached."));
-// Temporary flag to be made default shortly.
+// Temporary flag to be removed in 3.0
static cl::opt<bool>
-UnrollWithSCEV("unroll-scev", cl::init(false), cl::Hidden,
+NoSCEVUnroll("disable-unroll-scev", cl::init(false), cl::Hidden,
cl::desc("Use ScalarEvolution to analyze loop trip counts for unrolling"));
namespace {
@@ -145,7 +145,7 @@ bool LoopUnroll::runOnLoop(Loop *L, LPPassManager &LPM) {
// Find trip count and trip multiple if count is not available
unsigned TripCount = 0;
unsigned TripMultiple = 1;
- if (UnrollWithSCEV) {
+ if (!NoSCEVUnroll) {
// Find "latch trip count". UnrollLoop assumes that control cannot exit
// via the loop latch on any iteration prior to TripCount. The loop may exit
// early via an earlier branch.
OpenPOWER on IntegriCloud