1*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -scalar-evolution -analyze | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker; CHECK: Loop %bb3: backedge-taken count is (-1 + %n) 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Worker; We don't want to use a max in the trip count expression in 6*9880d681SAndroid Build Coastguard Worker; this testcase. 7*9880d681SAndroid Build Coastguard Worker 8*9880d681SAndroid Build Coastguard Workerdefine void @foo(i32 %n, i32* %p, i32* %q) nounwind { 9*9880d681SAndroid Build Coastguard Workerentry: 10*9880d681SAndroid Build Coastguard Worker icmp sgt i32 %n, 0 11*9880d681SAndroid Build Coastguard Worker br i1 %0, label %bb, label %return 12*9880d681SAndroid Build Coastguard Worker 13*9880d681SAndroid Build Coastguard Workerbb: 14*9880d681SAndroid Build Coastguard Worker load i32, i32* %q, align 4 15*9880d681SAndroid Build Coastguard Worker icmp eq i32 %1, 0 16*9880d681SAndroid Build Coastguard Worker br i1 %2, label %return, label %bb3.preheader 17*9880d681SAndroid Build Coastguard Worker 18*9880d681SAndroid Build Coastguard Workerbb3.preheader: 19*9880d681SAndroid Build Coastguard Worker br label %bb3 20*9880d681SAndroid Build Coastguard Worker 21*9880d681SAndroid Build Coastguard Workerbb3: 22*9880d681SAndroid Build Coastguard Worker %i.0 = phi i32 [ %7, %bb3 ], [ 0, %bb3.preheader ] 23*9880d681SAndroid Build Coastguard Worker getelementptr i32, i32* %p, i32 %i.0 24*9880d681SAndroid Build Coastguard Worker load i32, i32* %3, align 4 25*9880d681SAndroid Build Coastguard Worker add i32 %4, 1 26*9880d681SAndroid Build Coastguard Worker getelementptr i32, i32* %p, i32 %i.0 27*9880d681SAndroid Build Coastguard Worker store i32 %5, i32* %6, align 4 28*9880d681SAndroid Build Coastguard Worker add i32 %i.0, 1 29*9880d681SAndroid Build Coastguard Worker icmp slt i32 %7, %n 30*9880d681SAndroid Build Coastguard Worker br i1 %8, label %bb3, label %return.loopexit 31*9880d681SAndroid Build Coastguard Worker 32*9880d681SAndroid Build Coastguard Workerreturn.loopexit: 33*9880d681SAndroid Build Coastguard Worker br label %return 34*9880d681SAndroid Build Coastguard Worker 35*9880d681SAndroid Build Coastguard Workerreturn: 36*9880d681SAndroid Build Coastguard Worker ret void 37*9880d681SAndroid Build Coastguard Worker} 38