summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Vectorize/LoopVectorizationLegality.cpp
diff options
context:
space:
mode:
authorWarren Ristow <warren.ristow@sony.com>2018-09-21 23:03:50 +0000
committerWarren Ristow <warren.ristow@sony.com>2018-09-21 23:03:50 +0000
commit4f27730eaf600aeeb855964de09b90ff168ae247 (patch)
treeedecdba46da7a274b009db63fb98439d8b3fee47 /llvm/lib/Transforms/Vectorize/LoopVectorizationLegality.cpp
parentd7e83e73627c84f19b1dc3c2b5859035367356ae (diff)
downloadbcm5719-llvm-4f27730eaf600aeeb855964de09b90ff168ae247.tar.gz
bcm5719-llvm-4f27730eaf600aeeb855964de09b90ff168ae247.zip
[Loop Vectorizer] Abandon vectorization when no integer IV found
Support for vectorizing loops with secondary floating-point induction variables was added in r276554. A primary integer IV is still required for vectorization to be done. If an FP IV was found, but no integer IV was found at all (primary or secondary), the attempt to vectorize still went forward, causing a compiler-crash. This change abandons that attempt when no integer IV is found. (Vectorizing FP-only cases like this, rather than bailing out, is discussed as possible future work in D52327.) See PR38800 for more information. Differential Revision: https://reviews.llvm.org/D52327 llvm-svn: 342786
Diffstat (limited to 'llvm/lib/Transforms/Vectorize/LoopVectorizationLegality.cpp')
-rw-r--r--llvm/lib/Transforms/Vectorize/LoopVectorizationLegality.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/Vectorize/LoopVectorizationLegality.cpp b/llvm/lib/Transforms/Vectorize/LoopVectorizationLegality.cpp
index b77108d598f..9c81cdc9083 100644
--- a/llvm/lib/Transforms/Vectorize/LoopVectorizationLegality.cpp
+++ b/llvm/lib/Transforms/Vectorize/LoopVectorizationLegality.cpp
@@ -789,6 +789,10 @@ bool LoopVectorizationLegality::canVectorizeInstrs() {
ORE->emit(createMissedAnalysis("NoInductionVariable")
<< "loop induction variable could not be identified");
return false;
+ } else if (!WidestIndTy) {
+ ORE->emit(createMissedAnalysis("NoIntegerInductionVariable")
+ << "integer loop induction variable could not be identified");
+ return false;
}
}
OpenPOWER on IntegriCloud