[LoopIdiomRecognize] Transform backedge-taken count check into an assertion.
authorDavide Italiano <davide@freebsd.org>
Mon, 11 May 2015 21:02:34 +0000 (21:02 +0000)
committerDavide Italiano <davide@freebsd.org>
Mon, 11 May 2015 21:02:34 +0000 (21:02 +0000)
runOnCountable() allowed the caller to call on a loop without a
predictable backedge-taken count. Change the code so that only loops
with computable backdge-count can call this function, in order to catch
abuses.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@237044 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Scalar/LoopIdiomRecognize.cpp

index 7bc291784ab108cd0d11b1b586b2cceef303efba..b57b7c276d72511ec4e75daee415cc1459f50eeb 100644 (file)
@@ -611,7 +611,9 @@ bool NclPopcountRecognize::recognize() {
 
 bool LoopIdiomRecognize::runOnCountableLoop() {
   const SCEV *BECount = SE->getBackedgeTakenCount(CurLoop);
 
 bool LoopIdiomRecognize::runOnCountableLoop() {
   const SCEV *BECount = SE->getBackedgeTakenCount(CurLoop);
-  if (isa<SCEVCouldNotCompute>(BECount)) return false;
+  assert(!isa<SCEVCouldNotCompute>(BECount) &&
+    "runOnCountableLoop() called on a loop without a predictable"
+    "backedge-taken count");
 
   // If this loop executes exactly one time, then it should be peeled, not
   // optimized by this pass.
 
   // If this loop executes exactly one time, then it should be peeled, not
   // optimized by this pass.