aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Transforms/Scalar/LoopLoadElimination.cpp
diff options
context:
space:
mode:
authorAdam Nemet <anemet@apple.com>2016-02-05 01:14:05 +0000
committerAdam Nemet <anemet@apple.com>2016-02-05 01:14:05 +0000
commit9455c1d2b1fc7cd551ff80f004e14cf9ffd4c371 (patch)
tree3ff837ee9ee372d2c1e43be2c05ada735ab52324 /llvm/lib/Transforms/Scalar/LoopLoadElimination.cpp
parent0cf866ac6c193a190526fa51b1d129267b00f2a1 (diff)
downloadllvm-9455c1d2b1fc7cd551ff80f004e14cf9ffd4c371.zip
llvm-9455c1d2b1fc7cd551ff80f004e14cf9ffd4c371.tar.gz
llvm-9455c1d2b1fc7cd551ff80f004e14cf9ffd4c371.tar.bz2
[LoopLoadElim] Don't allow versioning when optForSize
This was requested in the review of D16300. llvm-svn: 259861
Diffstat (limited to 'llvm/lib/Transforms/Scalar/LoopLoadElimination.cpp')
-rw-r--r--llvm/lib/Transforms/Scalar/LoopLoadElimination.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/llvm/lib/Transforms/Scalar/LoopLoadElimination.cpp b/llvm/lib/Transforms/Scalar/LoopLoadElimination.cpp
index 1064d08..db96bea 100644
--- a/llvm/lib/Transforms/Scalar/LoopLoadElimination.cpp
+++ b/llvm/lib/Transforms/Scalar/LoopLoadElimination.cpp
@@ -465,9 +465,16 @@ public:
return false;
}
- // Point of no-return, start the transformation. First, version the loop if
- // necessary.
if (!Checks.empty() || !LAI.PSE.getUnionPredicate().isAlwaysTrue()) {
+ if (L->getHeader()->getParent()->optForSize()) {
+ DEBUG(dbgs() << "Versioning is needed but not allowed when optimizing "
+ "for size.\n");
+ return false;
+ }
+
+ // Point of no-return, start the transformation. First, version the loop
+ // if necessary.
+
LoopVersioning LV(LAI, L, LI, DT, PSE.getSE(), false);
LV.setAliasChecks(std::move(Checks));
LV.setSCEVChecks(LAI.PSE.getUnionPredicate());