1*9880d681SAndroid Build Coastguard Worker; RUN: opt -analyze -scalar-evolution < %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Workerdeclare i1 @use(i64) 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Workerdefine void @f_0() { 6*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: Classifying expressions for: @f_0 7*9880d681SAndroid Build Coastguard Worker 8*9880d681SAndroid Build Coastguard Worker; CHECK: %iv = phi i32 [ 0, %entry ], [ %iv.inc.nowrap, %be ] 9*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: --> {0,+,1}<nuw><nsw><%loop> 10*9880d681SAndroid Build Coastguard Worker; CHECK: %iv.inc.maywrap = add i32 %iv, 1 11*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: --> {1,+,1}<nuw><%loop> 12*9880d681SAndroid Build Coastguard Worker; CHECK: %iv.inc.maywrap.sext = sext i32 %iv.inc.maywrap to i64 13*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: --> (sext i32 {1,+,1}<nuw><%loop> to i64) 14*9880d681SAndroid Build Coastguard Workerentry: 15*9880d681SAndroid Build Coastguard Worker br label %loop 16*9880d681SAndroid Build Coastguard Worker 17*9880d681SAndroid Build Coastguard Workerloop: 18*9880d681SAndroid Build Coastguard Worker %iv = phi i32 [ 0, %entry ], [ %iv.inc.nowrap, %be ] 19*9880d681SAndroid Build Coastguard Worker %iv.inc.maywrap = add i32 %iv, 1 20*9880d681SAndroid Build Coastguard Worker %iv.inc.maywrap.sext = sext i32 %iv.inc.maywrap to i64 21*9880d681SAndroid Build Coastguard Worker %cond0 = call i1 @use(i64 %iv.inc.maywrap.sext) 22*9880d681SAndroid Build Coastguard Worker br i1 %cond0, label %be, label %leave 23*9880d681SAndroid Build Coastguard Worker 24*9880d681SAndroid Build Coastguard Workerbe: 25*9880d681SAndroid Build Coastguard Worker %iv.inc.nowrap = add nsw i32 %iv, 1 26*9880d681SAndroid Build Coastguard Worker %be.cond = call i1 @use(i64 0) ;; Get an unanalyzable value 27*9880d681SAndroid Build Coastguard Worker br i1 %be.cond, label %loop, label %leave 28*9880d681SAndroid Build Coastguard Worker 29*9880d681SAndroid Build Coastguard Workerleave: 30*9880d681SAndroid Build Coastguard Worker ret void 31*9880d681SAndroid Build Coastguard Worker} 32