[PATCH] D47216: [LV] Fix to pr37515, FP primary induction crashes LV

Hideki Saito via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue May 22 13:34:43 PDT 2018


hsaito updated this revision to Diff 148090.
hsaito added a comment.

LIT test added. ORE messaging doesn't seem to be working here (I see just "loop not vectorized" without the rest of the string), but that should be fixed separately.


https://reviews.llvm.org/D47216

Files:
  lib/Transforms/Vectorize/LoopVectorizationLegality.cpp
  test/Transforms/LoopVectorize/pr37515.ll


Index: lib/Transforms/Vectorize/LoopVectorizationLegality.cpp
===================================================================
--- lib/Transforms/Vectorize/LoopVectorizationLegality.cpp
+++ lib/Transforms/Vectorize/LoopVectorizationLegality.cpp
@@ -726,7 +726,7 @@
 
   if (!PrimaryInduction) {
     LLVM_DEBUG(dbgs() << "LV: Did not find one integer induction var.\n");
-    if (Inductions.empty()) {
+    if (Inductions.empty() || !WidestIndTy) {
       ORE->emit(createMissedAnalysis("NoInductionVariable")
                 << "loop induction variable could not be identified");
       return false;
Index: test/Transforms/LoopVectorize/pr37515.ll
===================================================================
--- test/Transforms/LoopVectorize/pr37515.ll
+++ test/Transforms/LoopVectorize/pr37515.ll
@@ -0,0 +1,20 @@
+; RUN: opt -passes='loop-vectorize' -S -pass-remarks-missed=loop-vectorize < %s 2>&1 | FileCheck %s
+;
+; FP primary induction is not supported in LV. Make sure Legal bails out.
+;
+; CHECK: loop not vectorized
+
+define void @PR37515() {
+entry:
+  br label %loop
+
+loop:
+  %p = phi float [ 19.0, %entry ], [ %a, %loop ]
+  %a = fadd fast float %p, -1.0
+  %m = fmul fast float %a, %a
+  %c = fcmp fast ugt float %a, 2.0
+  br i1 %c, label %loop, label %exit
+
+exit:
+  unreachable
+}


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D47216.148090.patch
Type: text/x-patch
Size: 1319 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180522/4d8e4d01/attachment.bin>


More information about the llvm-commits mailing list