1*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -analyze -scalar-evolution \ 2*9880d681SAndroid Build Coastguard Worker; RUN: -scalar-evolution-max-iterations=0 | FileCheck %s 3*9880d681SAndroid Build Coastguard Worker; PR2607 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Workerdefine i32 @b(i32 %x, i32 %y) nounwind { 6*9880d681SAndroid Build Coastguard Workerentry: 7*9880d681SAndroid Build Coastguard Worker %cmp2 = icmp slt i32 %y, %x 8*9880d681SAndroid Build Coastguard Worker %cond3 = select i1 %cmp2, i32 %y, i32 %x 9*9880d681SAndroid Build Coastguard Worker %cmp54 = icmp slt i32 %cond3, -2147483632 10*9880d681SAndroid Build Coastguard Worker br i1 %cmp54, label %forinc, label %afterfor 11*9880d681SAndroid Build Coastguard Worker 12*9880d681SAndroid Build Coastguard Workerforinc: ; preds = %forinc, %entry 13*9880d681SAndroid Build Coastguard Worker %j.01 = phi i32 [ %dec, %forinc ], [ -2147483632, %entry ] 14*9880d681SAndroid Build Coastguard Worker %dec = add i32 %j.01, -1 15*9880d681SAndroid Build Coastguard Worker %cmp = icmp slt i32 %y, %x 16*9880d681SAndroid Build Coastguard Worker %cond = select i1 %cmp, i32 %y, i32 %x 17*9880d681SAndroid Build Coastguard Worker %cmp5 = icmp sgt i32 %dec, %cond 18*9880d681SAndroid Build Coastguard Worker br i1 %cmp5, label %forinc, label %afterfor 19*9880d681SAndroid Build Coastguard Worker 20*9880d681SAndroid Build Coastguard Workerafterfor: ; preds = %forinc, %entry 21*9880d681SAndroid Build Coastguard Worker %j.0.lcssa = phi i32 [ -2147483632, %entry ], [ %dec, %forinc ] 22*9880d681SAndroid Build Coastguard Worker ret i32 %j.0.lcssa 23*9880d681SAndroid Build Coastguard Worker} 24*9880d681SAndroid Build Coastguard Worker 25*9880d681SAndroid Build Coastguard Worker; CHECK: backedge-taken count is (-2147483632 + ((-1 + (-1 * %{{[xy]}})) smax (-1 + (-1 * %{{[xy]}})))) 26*9880d681SAndroid Build Coastguard Worker 27