1*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -analyze -basicaa -da | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker; Test for a bug, which caused an assert when an invalid 4*9880d681SAndroid Build Coastguard Worker; SCEVAddRecExpr is created in addToCoefficient. 5*9880d681SAndroid Build Coastguard Worker 6*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - consistent input [S 0]! 7*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - input [* 0|<]! 8*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - none! 9*9880d681SAndroid Build Coastguard Worker 10*9880d681SAndroid Build Coastguard Workerdefine float @foo(float %g, [40 x float]* %rr) nounwind { 11*9880d681SAndroid Build Coastguard Workerentry: 12*9880d681SAndroid Build Coastguard Worker br label %for.cond1.preheader 13*9880d681SAndroid Build Coastguard Worker 14*9880d681SAndroid Build Coastguard Workerfor.cond1.preheader: 15*9880d681SAndroid Build Coastguard Worker %i.04 = phi i32 [ 0, %entry ], [ %add10, %for.inc9 ] 16*9880d681SAndroid Build Coastguard Worker %res.03 = phi float [ 0.000000e+00, %entry ], [ %add.res.1, %for.inc9 ] 17*9880d681SAndroid Build Coastguard Worker br label %for.body3 18*9880d681SAndroid Build Coastguard Worker 19*9880d681SAndroid Build Coastguard Workerfor.body3: 20*9880d681SAndroid Build Coastguard Worker %j.02 = phi i32 [ 0, %for.cond1.preheader ], [ %add8, %for.body3 ] 21*9880d681SAndroid Build Coastguard Worker %res.11 = phi float [ %res.03, %for.cond1.preheader ], [ %add.res.1, %for.body3 ] 22*9880d681SAndroid Build Coastguard Worker %arrayidx4 = getelementptr inbounds [40 x float], [40 x float]* %rr, i32 %j.02, i32 %j.02 23*9880d681SAndroid Build Coastguard Worker %0 = load float, float* %arrayidx4, align 4 24*9880d681SAndroid Build Coastguard Worker %arrayidx6 = getelementptr inbounds [40 x float], [40 x float]* %rr, i32 %i.04, i32 %j.02 25*9880d681SAndroid Build Coastguard Worker %1 = load float, float* %arrayidx6, align 4 26*9880d681SAndroid Build Coastguard Worker %add = fadd float %0, %1 27*9880d681SAndroid Build Coastguard Worker %cmp7 = fcmp ogt float %add, %g 28*9880d681SAndroid Build Coastguard Worker %add.res.1 = select i1 %cmp7, float %add, float %res.11 29*9880d681SAndroid Build Coastguard Worker %add8 = add nsw i32 %j.02, 5 30*9880d681SAndroid Build Coastguard Worker %cmp2 = icmp slt i32 %add8, 40 31*9880d681SAndroid Build Coastguard Worker br i1 %cmp2, label %for.body3, label %for.inc9 32*9880d681SAndroid Build Coastguard Worker 33*9880d681SAndroid Build Coastguard Workerfor.inc9: 34*9880d681SAndroid Build Coastguard Worker %add10 = add nsw i32 %i.04, 5 35*9880d681SAndroid Build Coastguard Worker %cmp = icmp slt i32 %add10, 40 36*9880d681SAndroid Build Coastguard Worker br i1 %cmp, label %for.cond1.preheader, label %for.end11 37*9880d681SAndroid Build Coastguard Worker 38*9880d681SAndroid Build Coastguard Workerfor.end11: 39*9880d681SAndroid Build Coastguard Worker ret float %add.res.1 40*9880d681SAndroid Build Coastguard Worker} 41