[llvm] [LV] Check loop-preheader for loop-legality when pass-remarks enabled (PR #166310)

Florian Hahn via llvm-commits llvm-commits at lists.llvm.org
Thu Nov 6 03:22:30 PST 2025


================
@@ -0,0 +1,33 @@
+; RUN: opt < %s -passes=loop-vectorize -pass-remarks=loop-vectorize -debug -disable-output 2>&1 | FileCheck %s
+; REQUIRES: asserts
+
+; Make sure LV legal bails out when the loop doesn't have a legal pre-header.
+; CHECK-LABEL: 'not_exist_preheader'
+; CHECK: LV: Not vectorizing: Loop doesn't have a legal pre-header.
+define void @not_exist_preheader(ptr %currMB, i1 %arg, ptr %arg2) nounwind uwtable {
+entry:
+  br i1 %arg, label %start.exit, label %if.then.i
+
+if.then.i:
+  unreachable
+
+start.exit:
+  indirectbr ptr %arg2, [label %0, label %for.bodyprime]
+
+0:
+  unreachable
+
+for.bodyprime:
+  %i.057375 = phi i32 [0, %start.exit], [%1, %for.bodyprime]
+  %arrayidx8prime = getelementptr inbounds i32, ptr %currMB, i32 %i.057375
+  store i32 0, ptr %arrayidx8prime, align 4
+  %1 = add i32 %i.057375, 1
+  %cmp5prime = icmp slt i32 %1, 4
+  br i1 %cmp5prime, label %for.bodyprime, label %for.endprime
+
+for.endprime:
+  br label %for.body23prime
+
+for.body23prime:
+  br label %for.body23prime
----------------
fhahn wrote:

Can do something like below?

```suggestion
exit: 
  ret void
```

https://github.com/llvm/llvm-project/pull/166310


More information about the llvm-commits mailing list