1*9880d681SAndroid Build Coastguard Worker; RUN: opt -analyze -scalar-evolution < %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Workerdefine void @x(i1* %cond) { 4*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: Classifying expressions for: @x 5*9880d681SAndroid Build Coastguard Worker entry: 6*9880d681SAndroid Build Coastguard Worker br label %loop 7*9880d681SAndroid Build Coastguard Worker 8*9880d681SAndroid Build Coastguard Worker loop: 9*9880d681SAndroid Build Coastguard Worker %idx = phi i8 [ 0, %entry ], [ %idx.inc, %loop ] 10*9880d681SAndroid Build Coastguard Worker; CHECK: %idx = phi i8 [ 0, %entry ], [ %idx.inc, %loop ] 11*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: --> {0,+,1}<nuw><nsw><%loop> U: [0,-128) S: [0,-128) 12*9880d681SAndroid Build Coastguard Worker 13*9880d681SAndroid Build Coastguard Worker %idx.inc = add nsw i8 %idx, 1 14*9880d681SAndroid Build Coastguard Worker 15*9880d681SAndroid Build Coastguard Worker %c = load volatile i1, i1* %cond 16*9880d681SAndroid Build Coastguard Worker br i1 %c, label %loop, label %exit 17*9880d681SAndroid Build Coastguard Worker 18*9880d681SAndroid Build Coastguard Worker exit: 19*9880d681SAndroid Build Coastguard Worker ret void 20*9880d681SAndroid Build Coastguard Worker} 21*9880d681SAndroid Build Coastguard Worker 22*9880d681SAndroid Build Coastguard Workerdefine void @y(i8* %addr) { 23*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: Classifying expressions for: @y 24*9880d681SAndroid Build Coastguard Worker entry: 25*9880d681SAndroid Build Coastguard Worker br label %loop 26*9880d681SAndroid Build Coastguard Worker 27*9880d681SAndroid Build Coastguard Worker loop: 28*9880d681SAndroid Build Coastguard Worker %idx = phi i8 [-5, %entry ], [ %idx.inc, %loop ] 29*9880d681SAndroid Build Coastguard Worker; CHECK: %idx = phi i8 [ -5, %entry ], [ %idx.inc, %loop ] 30*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: --> {-5,+,1}<%loop> U: [-5,6) S: [-5,6) 31*9880d681SAndroid Build Coastguard Worker 32*9880d681SAndroid Build Coastguard Worker %idx.inc = add i8 %idx, 1 33*9880d681SAndroid Build Coastguard Worker 34*9880d681SAndroid Build Coastguard Worker %continue = icmp slt i8 %idx.inc, 6 35*9880d681SAndroid Build Coastguard Worker br i1 %continue, label %loop, label %exit 36*9880d681SAndroid Build Coastguard Worker 37*9880d681SAndroid Build Coastguard Worker exit: 38*9880d681SAndroid Build Coastguard Worker ret void 39*9880d681SAndroid Build Coastguard Worker} 40