[llvm] [SCEV] Strip incorrect code in proving RHS > Start in howManyLT (PR #222878)
Florian Hahn via llvm-commits
llvm-commits at lists.llvm.org
Sat Sep 12 12:34:51 PDT 2026
https://github.com/fhahn commented:
It would probably be good to have test coverage for the code path, I think something like the below should do
```
; opt -passes='print<scalar-evolution>'
define i32 @guarded_nested_loop(i32 %start, i32 %rhs, i32 %end) {
entry:
br label %outer
outer:
%o = phi i32 [ %start, %entry ], [ %o.next, %outer.latch ]
%before = sub i32 %o, 1
%guard = icmp ugt i32 %rhs, %before
br i1 %guard, label %inner, label %outer.latch
inner:
%iv = phi i32 [ %o, %outer ], [ %next, %inner ]
%next = add nuw i32 %iv, 2
%cmp = icmp ult i32 %iv, %rhs
br i1 %cmp, label %inner, label %outer.latch
outer.latch:
%result = phi i32 [ %o, %outer ], [ %iv, %inner ]
%o.next = add i32 %o, 1
%continue = icmp ne i32 %o.next, %end
br i1 %continue, label %outer, label %exit
exit:
ret i32 %result
}
```
https://github.com/llvm/llvm-project/pull/222878
More information about the llvm-commits
mailing list