1*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -analyze -scalar-evolution | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker; PR4569 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Workerdefine i16 @main() nounwind { 5*9880d681SAndroid Build Coastguard Workerentry: 6*9880d681SAndroid Build Coastguard Worker br label %bb.i 7*9880d681SAndroid Build Coastguard Worker 8*9880d681SAndroid Build Coastguard Workerbb.i: ; preds = %bb1.i, %bb.nph 9*9880d681SAndroid Build Coastguard Worker %l_95.0.i1 = phi i8 [ %tmp1, %bb.i ], [ 0, %entry ] 10*9880d681SAndroid Build Coastguard Worker 11*9880d681SAndroid Build Coastguard Worker; This cast shouldn't be folded into the addrec. 12*9880d681SAndroid Build Coastguard Worker; CHECK: %tmp = zext i8 %l_95.0.i1 to i16 13*9880d681SAndroid Build Coastguard Worker; CHECK: --> (zext i8 {0,+,-1}<nw><%bb.i> to i16){{ U: [^ ]+ S: [^ ]+}}{{ *}}Exits: 2 14*9880d681SAndroid Build Coastguard Worker 15*9880d681SAndroid Build Coastguard Worker %tmp = zext i8 %l_95.0.i1 to i16 16*9880d681SAndroid Build Coastguard Worker 17*9880d681SAndroid Build Coastguard Worker %tmp1 = add i8 %l_95.0.i1, -1 18*9880d681SAndroid Build Coastguard Worker %phitmp = icmp eq i8 %tmp1, 1 19*9880d681SAndroid Build Coastguard Worker br i1 %phitmp, label %bb1.i.func_36.exit_crit_edge, label %bb.i 20*9880d681SAndroid Build Coastguard Worker 21*9880d681SAndroid Build Coastguard Workerbb1.i.func_36.exit_crit_edge: 22*9880d681SAndroid Build Coastguard Worker ret i16 %tmp 23*9880d681SAndroid Build Coastguard Worker} 24