[llvm] [SCEV] Do not attempt to collect loop guards for loops without predecessor. (PR #123662)

Danila Malyutin via llvm-commits llvm-commits at lists.llvm.org
Wed Jan 22 05:43:17 PST 2025


================
@@ -336,3 +336,31 @@ exit:
   ret void
 
 }
+
+; Checks correct traversal for loops without a unique predecessor
+; outside the loop.
+define void @pr122913() {
----------------
danilaml wrote:

```llvm
define void @pr122913() {
entry:
  br i1 1, label %bb, label %header

bb:
  br i1 1, label %exit, label %header

header:
  %0 = phi i32 [ %1, %body ], [ 0, %bb ], [ 0, %entry ]
  br label %body

body:
  %1 = add i32 %0, 1
  %2 = icmp ult i32 %1, 0
  br i1 %2, label %header, label %exit

exit:
  ret void
}
```
Seems to crash in the same way (either no predecessors or multiple predecessors would work to cause this crash). https://godbolt.org/z/8rdhM11vh

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


More information about the llvm-commits mailing list