mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-18 12:29:21 +00:00
variable (with step 1) and m is its final value. Then, the correct trip count is SMAX(m,n)-n. Previously, we used SMAX(0,m-n), but m-n may overflow and can't in general be interpreted as signed. Patch by Nick Lewycky. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47007 91177308-0d34-0410-b5e6-96231b3b80d8
17 lines
366 B
LLVM
17 lines
366 B
LLVM
; RUN: llvm-as < %s | opt -scalar-evolution -analyze | grep {Loop loop: ( 100 + ( -100 smax %n)) iterations!}
|
|
; PR2002
|
|
|
|
define void @foo(i8 %n) {
|
|
entry:
|
|
br label %loop
|
|
loop:
|
|
%i = phi i8 [ -100, %entry ], [ %i.inc, %next ]
|
|
%cond = icmp slt i8 %i, %n
|
|
br i1 %cond, label %next, label %return
|
|
next:
|
|
%i.inc = add i8 %i, 1
|
|
br label %loop
|
|
return:
|
|
ret void
|
|
}
|