1*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -analyze -basicaa -da | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker; ModuleID = 'Separability.bc' 4*9880d681SAndroid Build Coastguard Workertarget datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" 5*9880d681SAndroid Build Coastguard Workertarget triple = "x86_64-apple-macosx10.6.0" 6*9880d681SAndroid Build Coastguard Worker 7*9880d681SAndroid Build Coastguard Worker 8*9880d681SAndroid Build Coastguard Worker;; for (long int i = 0; i < 50; i++) 9*9880d681SAndroid Build Coastguard Worker;; for (long int j = 0; j < 50; j++) 10*9880d681SAndroid Build Coastguard Worker;; for (long int k = 0; k < 50; k++) 11*9880d681SAndroid Build Coastguard Worker;; for (long int l = 0; l < 50; l++) { 12*9880d681SAndroid Build Coastguard Worker;; A[n][i][j + k] = i; 13*9880d681SAndroid Build Coastguard Worker;; *B++ = A[10][i + 10][2*j - l]; 14*9880d681SAndroid Build Coastguard Worker 15*9880d681SAndroid Build Coastguard Workerdefine void @sep0([100 x [100 x i32]]* %A, i32* %B, i32 %n) nounwind uwtable ssp { 16*9880d681SAndroid Build Coastguard Workerentry: 17*9880d681SAndroid Build Coastguard Worker br label %for.cond1.preheader 18*9880d681SAndroid Build Coastguard Worker 19*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - output [0 * * S]! 20*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - flow [-10 * * *]! 21*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - confused! 22*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - input [0 * S *]! 23*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - confused! 24*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - none! 25*9880d681SAndroid Build Coastguard Worker 26*9880d681SAndroid Build Coastguard Workerfor.cond1.preheader: ; preds = %entry, %for.inc22 27*9880d681SAndroid Build Coastguard Worker %B.addr.08 = phi i32* [ %B, %entry ], [ %scevgep11, %for.inc22 ] 28*9880d681SAndroid Build Coastguard Worker %i.07 = phi i64 [ 0, %entry ], [ %inc23, %for.inc22 ] 29*9880d681SAndroid Build Coastguard Worker br label %for.cond4.preheader 30*9880d681SAndroid Build Coastguard Worker 31*9880d681SAndroid Build Coastguard Workerfor.cond4.preheader: ; preds = %for.cond1.preheader, %for.inc19 32*9880d681SAndroid Build Coastguard Worker %B.addr.16 = phi i32* [ %B.addr.08, %for.cond1.preheader ], [ %scevgep9, %for.inc19 ] 33*9880d681SAndroid Build Coastguard Worker %j.05 = phi i64 [ 0, %for.cond1.preheader ], [ %inc20, %for.inc19 ] 34*9880d681SAndroid Build Coastguard Worker br label %for.cond7.preheader 35*9880d681SAndroid Build Coastguard Worker 36*9880d681SAndroid Build Coastguard Workerfor.cond7.preheader: ; preds = %for.cond4.preheader, %for.inc16 37*9880d681SAndroid Build Coastguard Worker %B.addr.24 = phi i32* [ %B.addr.16, %for.cond4.preheader ], [ %scevgep, %for.inc16 ] 38*9880d681SAndroid Build Coastguard Worker %k.03 = phi i64 [ 0, %for.cond4.preheader ], [ %inc17, %for.inc16 ] 39*9880d681SAndroid Build Coastguard Worker br label %for.body9 40*9880d681SAndroid Build Coastguard Worker 41*9880d681SAndroid Build Coastguard Workerfor.body9: ; preds = %for.cond7.preheader, %for.body9 42*9880d681SAndroid Build Coastguard Worker %l.02 = phi i64 [ 0, %for.cond7.preheader ], [ %inc, %for.body9 ] 43*9880d681SAndroid Build Coastguard Worker %B.addr.31 = phi i32* [ %B.addr.24, %for.cond7.preheader ], [ %incdec.ptr, %for.body9 ] 44*9880d681SAndroid Build Coastguard Worker %conv = trunc i64 %i.07 to i32 45*9880d681SAndroid Build Coastguard Worker %add = add nsw i64 %j.05, %k.03 46*9880d681SAndroid Build Coastguard Worker %idxprom = sext i32 %n to i64 47*9880d681SAndroid Build Coastguard Worker %arrayidx11 = getelementptr inbounds [100 x [100 x i32]], [100 x [100 x i32]]* %A, i64 %idxprom, i64 %i.07, i64 %add 48*9880d681SAndroid Build Coastguard Worker store i32 %conv, i32* %arrayidx11, align 4 49*9880d681SAndroid Build Coastguard Worker %mul = shl nsw i64 %j.05, 1 50*9880d681SAndroid Build Coastguard Worker %sub = sub nsw i64 %mul, %l.02 51*9880d681SAndroid Build Coastguard Worker %add12 = add nsw i64 %i.07, 10 52*9880d681SAndroid Build Coastguard Worker %arrayidx15 = getelementptr inbounds [100 x [100 x i32]], [100 x [100 x i32]]* %A, i64 10, i64 %add12, i64 %sub 53*9880d681SAndroid Build Coastguard Worker %0 = load i32, i32* %arrayidx15, align 4 54*9880d681SAndroid Build Coastguard Worker %incdec.ptr = getelementptr inbounds i32, i32* %B.addr.31, i64 1 55*9880d681SAndroid Build Coastguard Worker store i32 %0, i32* %B.addr.31, align 4 56*9880d681SAndroid Build Coastguard Worker %inc = add nsw i64 %l.02, 1 57*9880d681SAndroid Build Coastguard Worker %exitcond = icmp ne i64 %inc, 50 58*9880d681SAndroid Build Coastguard Worker br i1 %exitcond, label %for.body9, label %for.inc16 59*9880d681SAndroid Build Coastguard Worker 60*9880d681SAndroid Build Coastguard Workerfor.inc16: ; preds = %for.body9 61*9880d681SAndroid Build Coastguard Worker %scevgep = getelementptr i32, i32* %B.addr.24, i64 50 62*9880d681SAndroid Build Coastguard Worker %inc17 = add nsw i64 %k.03, 1 63*9880d681SAndroid Build Coastguard Worker %exitcond10 = icmp ne i64 %inc17, 50 64*9880d681SAndroid Build Coastguard Worker br i1 %exitcond10, label %for.cond7.preheader, label %for.inc19 65*9880d681SAndroid Build Coastguard Worker 66*9880d681SAndroid Build Coastguard Workerfor.inc19: ; preds = %for.inc16 67*9880d681SAndroid Build Coastguard Worker %scevgep9 = getelementptr i32, i32* %B.addr.16, i64 2500 68*9880d681SAndroid Build Coastguard Worker %inc20 = add nsw i64 %j.05, 1 69*9880d681SAndroid Build Coastguard Worker %exitcond12 = icmp ne i64 %inc20, 50 70*9880d681SAndroid Build Coastguard Worker br i1 %exitcond12, label %for.cond4.preheader, label %for.inc22 71*9880d681SAndroid Build Coastguard Worker 72*9880d681SAndroid Build Coastguard Workerfor.inc22: ; preds = %for.inc19 73*9880d681SAndroid Build Coastguard Worker %scevgep11 = getelementptr i32, i32* %B.addr.08, i64 125000 74*9880d681SAndroid Build Coastguard Worker %inc23 = add nsw i64 %i.07, 1 75*9880d681SAndroid Build Coastguard Worker %exitcond13 = icmp ne i64 %inc23, 50 76*9880d681SAndroid Build Coastguard Worker br i1 %exitcond13, label %for.cond1.preheader, label %for.end24 77*9880d681SAndroid Build Coastguard Worker 78*9880d681SAndroid Build Coastguard Workerfor.end24: ; preds = %for.inc22 79*9880d681SAndroid Build Coastguard Worker ret void 80*9880d681SAndroid Build Coastguard Worker} 81*9880d681SAndroid Build Coastguard Worker 82*9880d681SAndroid Build Coastguard Worker 83*9880d681SAndroid Build Coastguard Worker;; for (long int i = 0; i < 50; i++) 84*9880d681SAndroid Build Coastguard Worker;; for (long int j = 0; j < 50; j++) 85*9880d681SAndroid Build Coastguard Worker;; for (long int k = 0; k < 50; k++) 86*9880d681SAndroid Build Coastguard Worker;; for (long int l = 0; l < 50; l++) { 87*9880d681SAndroid Build Coastguard Worker;; A[i][i][j + k] = i; 88*9880d681SAndroid Build Coastguard Worker;; *B++ = A[10][i + 10][2*j - l]; 89*9880d681SAndroid Build Coastguard Worker 90*9880d681SAndroid Build Coastguard Workerdefine void @sep1([100 x [100 x i32]]* %A, i32* %B, i32 %n) nounwind uwtable ssp { 91*9880d681SAndroid Build Coastguard Workerentry: 92*9880d681SAndroid Build Coastguard Worker br label %for.cond1.preheader 93*9880d681SAndroid Build Coastguard Worker 94*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - output [0 * * S]! 95*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - flow [> * * *]! 96*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - confused! 97*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - input [0 * S *]! 98*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - confused! 99*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - none! 100*9880d681SAndroid Build Coastguard Worker 101*9880d681SAndroid Build Coastguard Workerfor.cond1.preheader: ; preds = %entry, %for.inc22 102*9880d681SAndroid Build Coastguard Worker %B.addr.08 = phi i32* [ %B, %entry ], [ %scevgep11, %for.inc22 ] 103*9880d681SAndroid Build Coastguard Worker %i.07 = phi i64 [ 0, %entry ], [ %inc23, %for.inc22 ] 104*9880d681SAndroid Build Coastguard Worker br label %for.cond4.preheader 105*9880d681SAndroid Build Coastguard Worker 106*9880d681SAndroid Build Coastguard Workerfor.cond4.preheader: ; preds = %for.cond1.preheader, %for.inc19 107*9880d681SAndroid Build Coastguard Worker %B.addr.16 = phi i32* [ %B.addr.08, %for.cond1.preheader ], [ %scevgep9, %for.inc19 ] 108*9880d681SAndroid Build Coastguard Worker %j.05 = phi i64 [ 0, %for.cond1.preheader ], [ %inc20, %for.inc19 ] 109*9880d681SAndroid Build Coastguard Worker br label %for.cond7.preheader 110*9880d681SAndroid Build Coastguard Worker 111*9880d681SAndroid Build Coastguard Workerfor.cond7.preheader: ; preds = %for.cond4.preheader, %for.inc16 112*9880d681SAndroid Build Coastguard Worker %B.addr.24 = phi i32* [ %B.addr.16, %for.cond4.preheader ], [ %scevgep, %for.inc16 ] 113*9880d681SAndroid Build Coastguard Worker %k.03 = phi i64 [ 0, %for.cond4.preheader ], [ %inc17, %for.inc16 ] 114*9880d681SAndroid Build Coastguard Worker br label %for.body9 115*9880d681SAndroid Build Coastguard Worker 116*9880d681SAndroid Build Coastguard Workerfor.body9: ; preds = %for.cond7.preheader, %for.body9 117*9880d681SAndroid Build Coastguard Worker %l.02 = phi i64 [ 0, %for.cond7.preheader ], [ %inc, %for.body9 ] 118*9880d681SAndroid Build Coastguard Worker %B.addr.31 = phi i32* [ %B.addr.24, %for.cond7.preheader ], [ %incdec.ptr, %for.body9 ] 119*9880d681SAndroid Build Coastguard Worker %conv = trunc i64 %i.07 to i32 120*9880d681SAndroid Build Coastguard Worker %add = add nsw i64 %j.05, %k.03 121*9880d681SAndroid Build Coastguard Worker %arrayidx11 = getelementptr inbounds [100 x [100 x i32]], [100 x [100 x i32]]* %A, i64 %i.07, i64 %i.07, i64 %add 122*9880d681SAndroid Build Coastguard Worker store i32 %conv, i32* %arrayidx11, align 4 123*9880d681SAndroid Build Coastguard Worker %mul = shl nsw i64 %j.05, 1 124*9880d681SAndroid Build Coastguard Worker %sub = sub nsw i64 %mul, %l.02 125*9880d681SAndroid Build Coastguard Worker %add12 = add nsw i64 %i.07, 10 126*9880d681SAndroid Build Coastguard Worker %arrayidx15 = getelementptr inbounds [100 x [100 x i32]], [100 x [100 x i32]]* %A, i64 10, i64 %add12, i64 %sub 127*9880d681SAndroid Build Coastguard Worker %0 = load i32, i32* %arrayidx15, align 4 128*9880d681SAndroid Build Coastguard Worker %incdec.ptr = getelementptr inbounds i32, i32* %B.addr.31, i64 1 129*9880d681SAndroid Build Coastguard Worker store i32 %0, i32* %B.addr.31, align 4 130*9880d681SAndroid Build Coastguard Worker %inc = add nsw i64 %l.02, 1 131*9880d681SAndroid Build Coastguard Worker %exitcond = icmp ne i64 %inc, 50 132*9880d681SAndroid Build Coastguard Worker br i1 %exitcond, label %for.body9, label %for.inc16 133*9880d681SAndroid Build Coastguard Worker 134*9880d681SAndroid Build Coastguard Workerfor.inc16: ; preds = %for.body9 135*9880d681SAndroid Build Coastguard Worker %scevgep = getelementptr i32, i32* %B.addr.24, i64 50 136*9880d681SAndroid Build Coastguard Worker %inc17 = add nsw i64 %k.03, 1 137*9880d681SAndroid Build Coastguard Worker %exitcond10 = icmp ne i64 %inc17, 50 138*9880d681SAndroid Build Coastguard Worker br i1 %exitcond10, label %for.cond7.preheader, label %for.inc19 139*9880d681SAndroid Build Coastguard Worker 140*9880d681SAndroid Build Coastguard Workerfor.inc19: ; preds = %for.inc16 141*9880d681SAndroid Build Coastguard Worker %scevgep9 = getelementptr i32, i32* %B.addr.16, i64 2500 142*9880d681SAndroid Build Coastguard Worker %inc20 = add nsw i64 %j.05, 1 143*9880d681SAndroid Build Coastguard Worker %exitcond12 = icmp ne i64 %inc20, 50 144*9880d681SAndroid Build Coastguard Worker br i1 %exitcond12, label %for.cond4.preheader, label %for.inc22 145*9880d681SAndroid Build Coastguard Worker 146*9880d681SAndroid Build Coastguard Workerfor.inc22: ; preds = %for.inc19 147*9880d681SAndroid Build Coastguard Worker %scevgep11 = getelementptr i32, i32* %B.addr.08, i64 125000 148*9880d681SAndroid Build Coastguard Worker %inc23 = add nsw i64 %i.07, 1 149*9880d681SAndroid Build Coastguard Worker %exitcond13 = icmp ne i64 %inc23, 50 150*9880d681SAndroid Build Coastguard Worker br i1 %exitcond13, label %for.cond1.preheader, label %for.end24 151*9880d681SAndroid Build Coastguard Worker 152*9880d681SAndroid Build Coastguard Workerfor.end24: ; preds = %for.inc22 153*9880d681SAndroid Build Coastguard Worker ret void 154*9880d681SAndroid Build Coastguard Worker} 155*9880d681SAndroid Build Coastguard Worker 156*9880d681SAndroid Build Coastguard Worker 157*9880d681SAndroid Build Coastguard Worker;; for (long int i = 0; i < 50; i++) 158*9880d681SAndroid Build Coastguard Worker;; for (long int j = 0; j < 50; j++) 159*9880d681SAndroid Build Coastguard Worker;; for (long int k = 0; k < 50; k++) 160*9880d681SAndroid Build Coastguard Worker;; for (long int l = 0; l < 50; l++) { 161*9880d681SAndroid Build Coastguard Worker;; A[i][i][i + k][l] = i; 162*9880d681SAndroid Build Coastguard Worker;; *B++ = A[10][i + 10][j + k][l + 10]; 163*9880d681SAndroid Build Coastguard Worker 164*9880d681SAndroid Build Coastguard Workerdefine void @sep2([100 x [100 x [100 x i32]]]* %A, i32* %B, i32 %n) nounwind uwtable ssp { 165*9880d681SAndroid Build Coastguard Workerentry: 166*9880d681SAndroid Build Coastguard Worker br label %for.cond1.preheader 167*9880d681SAndroid Build Coastguard Worker 168*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - consistent output [0 S 0 0]! 169*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - flow [> * * -10]! 170*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - confused! 171*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - input [0 * * 0]! 172*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - confused! 173*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - none! 174*9880d681SAndroid Build Coastguard Worker 175*9880d681SAndroid Build Coastguard Workerfor.cond1.preheader: ; preds = %entry, %for.inc26 176*9880d681SAndroid Build Coastguard Worker %B.addr.08 = phi i32* [ %B, %entry ], [ %scevgep11, %for.inc26 ] 177*9880d681SAndroid Build Coastguard Worker %i.07 = phi i64 [ 0, %entry ], [ %inc27, %for.inc26 ] 178*9880d681SAndroid Build Coastguard Worker br label %for.cond4.preheader 179*9880d681SAndroid Build Coastguard Worker 180*9880d681SAndroid Build Coastguard Workerfor.cond4.preheader: ; preds = %for.cond1.preheader, %for.inc23 181*9880d681SAndroid Build Coastguard Worker %B.addr.16 = phi i32* [ %B.addr.08, %for.cond1.preheader ], [ %scevgep9, %for.inc23 ] 182*9880d681SAndroid Build Coastguard Worker %j.05 = phi i64 [ 0, %for.cond1.preheader ], [ %inc24, %for.inc23 ] 183*9880d681SAndroid Build Coastguard Worker br label %for.cond7.preheader 184*9880d681SAndroid Build Coastguard Worker 185*9880d681SAndroid Build Coastguard Workerfor.cond7.preheader: ; preds = %for.cond4.preheader, %for.inc20 186*9880d681SAndroid Build Coastguard Worker %B.addr.24 = phi i32* [ %B.addr.16, %for.cond4.preheader ], [ %scevgep, %for.inc20 ] 187*9880d681SAndroid Build Coastguard Worker %k.03 = phi i64 [ 0, %for.cond4.preheader ], [ %inc21, %for.inc20 ] 188*9880d681SAndroid Build Coastguard Worker br label %for.body9 189*9880d681SAndroid Build Coastguard Worker 190*9880d681SAndroid Build Coastguard Workerfor.body9: ; preds = %for.cond7.preheader, %for.body9 191*9880d681SAndroid Build Coastguard Worker %l.02 = phi i64 [ 0, %for.cond7.preheader ], [ %inc, %for.body9 ] 192*9880d681SAndroid Build Coastguard Worker %B.addr.31 = phi i32* [ %B.addr.24, %for.cond7.preheader ], [ %incdec.ptr, %for.body9 ] 193*9880d681SAndroid Build Coastguard Worker %conv = trunc i64 %i.07 to i32 194*9880d681SAndroid Build Coastguard Worker %add = add nsw i64 %i.07, %k.03 195*9880d681SAndroid Build Coastguard Worker %arrayidx12 = getelementptr inbounds [100 x [100 x [100 x i32]]], [100 x [100 x [100 x i32]]]* %A, i64 %i.07, i64 %i.07, i64 %add, i64 %l.02 196*9880d681SAndroid Build Coastguard Worker store i32 %conv, i32* %arrayidx12, align 4 197*9880d681SAndroid Build Coastguard Worker %add13 = add nsw i64 %l.02, 10 198*9880d681SAndroid Build Coastguard Worker %add14 = add nsw i64 %j.05, %k.03 199*9880d681SAndroid Build Coastguard Worker %add15 = add nsw i64 %i.07, 10 200*9880d681SAndroid Build Coastguard Worker %arrayidx19 = getelementptr inbounds [100 x [100 x [100 x i32]]], [100 x [100 x [100 x i32]]]* %A, i64 10, i64 %add15, i64 %add14, i64 %add13 201*9880d681SAndroid Build Coastguard Worker %0 = load i32, i32* %arrayidx19, align 4 202*9880d681SAndroid Build Coastguard Worker %incdec.ptr = getelementptr inbounds i32, i32* %B.addr.31, i64 1 203*9880d681SAndroid Build Coastguard Worker store i32 %0, i32* %B.addr.31, align 4 204*9880d681SAndroid Build Coastguard Worker %inc = add nsw i64 %l.02, 1 205*9880d681SAndroid Build Coastguard Worker %exitcond = icmp ne i64 %inc, 50 206*9880d681SAndroid Build Coastguard Worker br i1 %exitcond, label %for.body9, label %for.inc20 207*9880d681SAndroid Build Coastguard Worker 208*9880d681SAndroid Build Coastguard Workerfor.inc20: ; preds = %for.body9 209*9880d681SAndroid Build Coastguard Worker %scevgep = getelementptr i32, i32* %B.addr.24, i64 50 210*9880d681SAndroid Build Coastguard Worker %inc21 = add nsw i64 %k.03, 1 211*9880d681SAndroid Build Coastguard Worker %exitcond10 = icmp ne i64 %inc21, 50 212*9880d681SAndroid Build Coastguard Worker br i1 %exitcond10, label %for.cond7.preheader, label %for.inc23 213*9880d681SAndroid Build Coastguard Worker 214*9880d681SAndroid Build Coastguard Workerfor.inc23: ; preds = %for.inc20 215*9880d681SAndroid Build Coastguard Worker %scevgep9 = getelementptr i32, i32* %B.addr.16, i64 2500 216*9880d681SAndroid Build Coastguard Worker %inc24 = add nsw i64 %j.05, 1 217*9880d681SAndroid Build Coastguard Worker %exitcond12 = icmp ne i64 %inc24, 50 218*9880d681SAndroid Build Coastguard Worker br i1 %exitcond12, label %for.cond4.preheader, label %for.inc26 219*9880d681SAndroid Build Coastguard Worker 220*9880d681SAndroid Build Coastguard Workerfor.inc26: ; preds = %for.inc23 221*9880d681SAndroid Build Coastguard Worker %scevgep11 = getelementptr i32, i32* %B.addr.08, i64 125000 222*9880d681SAndroid Build Coastguard Worker %inc27 = add nsw i64 %i.07, 1 223*9880d681SAndroid Build Coastguard Worker %exitcond13 = icmp ne i64 %inc27, 50 224*9880d681SAndroid Build Coastguard Worker br i1 %exitcond13, label %for.cond1.preheader, label %for.end28 225*9880d681SAndroid Build Coastguard Worker 226*9880d681SAndroid Build Coastguard Workerfor.end28: ; preds = %for.inc26 227*9880d681SAndroid Build Coastguard Worker ret void 228*9880d681SAndroid Build Coastguard Worker} 229*9880d681SAndroid Build Coastguard Worker 230*9880d681SAndroid Build Coastguard Worker 231*9880d681SAndroid Build Coastguard Worker;; for (long int i = 0; i < 50; i++) 232*9880d681SAndroid Build Coastguard Worker;; for (long int j = 0; j < 50; j++) 233*9880d681SAndroid Build Coastguard Worker;; for (long int k = 0; k < 50; k++) 234*9880d681SAndroid Build Coastguard Worker;; for (long int l = 0; l < 50; l++) { 235*9880d681SAndroid Build Coastguard Worker;; A[i][i][i + k][l + k] = i; 236*9880d681SAndroid Build Coastguard Worker;; *B++ = A[10][i + 10][j + k][l + 10]; 237*9880d681SAndroid Build Coastguard Worker 238*9880d681SAndroid Build Coastguard Workerdefine void @sep3([100 x [100 x [100 x i32]]]* %A, i32* %B, i32 %n) nounwind uwtable ssp { 239*9880d681SAndroid Build Coastguard Workerentry: 240*9880d681SAndroid Build Coastguard Worker br label %for.cond1.preheader 241*9880d681SAndroid Build Coastguard Worker 242*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - consistent output [0 S 0 0]! 243*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - flow [> * * *]! 244*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - confused! 245*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - input [0 * * 0]! 246*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - confused! 247*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - none! 248*9880d681SAndroid Build Coastguard Worker 249*9880d681SAndroid Build Coastguard Workerfor.cond1.preheader: ; preds = %entry, %for.inc27 250*9880d681SAndroid Build Coastguard Worker %B.addr.08 = phi i32* [ %B, %entry ], [ %scevgep11, %for.inc27 ] 251*9880d681SAndroid Build Coastguard Worker %i.07 = phi i64 [ 0, %entry ], [ %inc28, %for.inc27 ] 252*9880d681SAndroid Build Coastguard Worker br label %for.cond4.preheader 253*9880d681SAndroid Build Coastguard Worker 254*9880d681SAndroid Build Coastguard Workerfor.cond4.preheader: ; preds = %for.cond1.preheader, %for.inc24 255*9880d681SAndroid Build Coastguard Worker %B.addr.16 = phi i32* [ %B.addr.08, %for.cond1.preheader ], [ %scevgep9, %for.inc24 ] 256*9880d681SAndroid Build Coastguard Worker %j.05 = phi i64 [ 0, %for.cond1.preheader ], [ %inc25, %for.inc24 ] 257*9880d681SAndroid Build Coastguard Worker br label %for.cond7.preheader 258*9880d681SAndroid Build Coastguard Worker 259*9880d681SAndroid Build Coastguard Workerfor.cond7.preheader: ; preds = %for.cond4.preheader, %for.inc21 260*9880d681SAndroid Build Coastguard Worker %B.addr.24 = phi i32* [ %B.addr.16, %for.cond4.preheader ], [ %scevgep, %for.inc21 ] 261*9880d681SAndroid Build Coastguard Worker %k.03 = phi i64 [ 0, %for.cond4.preheader ], [ %inc22, %for.inc21 ] 262*9880d681SAndroid Build Coastguard Worker br label %for.body9 263*9880d681SAndroid Build Coastguard Worker 264*9880d681SAndroid Build Coastguard Workerfor.body9: ; preds = %for.cond7.preheader, %for.body9 265*9880d681SAndroid Build Coastguard Worker %l.02 = phi i64 [ 0, %for.cond7.preheader ], [ %inc, %for.body9 ] 266*9880d681SAndroid Build Coastguard Worker %B.addr.31 = phi i32* [ %B.addr.24, %for.cond7.preheader ], [ %incdec.ptr, %for.body9 ] 267*9880d681SAndroid Build Coastguard Worker %conv = trunc i64 %i.07 to i32 268*9880d681SAndroid Build Coastguard Worker %add = add nsw i64 %l.02, %k.03 269*9880d681SAndroid Build Coastguard Worker %add10 = add nsw i64 %i.07, %k.03 270*9880d681SAndroid Build Coastguard Worker %arrayidx13 = getelementptr inbounds [100 x [100 x [100 x i32]]], [100 x [100 x [100 x i32]]]* %A, i64 %i.07, i64 %i.07, i64 %add10, i64 %add 271*9880d681SAndroid Build Coastguard Worker store i32 %conv, i32* %arrayidx13, align 4 272*9880d681SAndroid Build Coastguard Worker %add14 = add nsw i64 %l.02, 10 273*9880d681SAndroid Build Coastguard Worker %add15 = add nsw i64 %j.05, %k.03 274*9880d681SAndroid Build Coastguard Worker %add16 = add nsw i64 %i.07, 10 275*9880d681SAndroid Build Coastguard Worker %arrayidx20 = getelementptr inbounds [100 x [100 x [100 x i32]]], [100 x [100 x [100 x i32]]]* %A, i64 10, i64 %add16, i64 %add15, i64 %add14 276*9880d681SAndroid Build Coastguard Worker %0 = load i32, i32* %arrayidx20, align 4 277*9880d681SAndroid Build Coastguard Worker %incdec.ptr = getelementptr inbounds i32, i32* %B.addr.31, i64 1 278*9880d681SAndroid Build Coastguard Worker store i32 %0, i32* %B.addr.31, align 4 279*9880d681SAndroid Build Coastguard Worker %inc = add nsw i64 %l.02, 1 280*9880d681SAndroid Build Coastguard Worker %exitcond = icmp ne i64 %inc, 50 281*9880d681SAndroid Build Coastguard Worker br i1 %exitcond, label %for.body9, label %for.inc21 282*9880d681SAndroid Build Coastguard Worker 283*9880d681SAndroid Build Coastguard Workerfor.inc21: ; preds = %for.body9 284*9880d681SAndroid Build Coastguard Worker %scevgep = getelementptr i32, i32* %B.addr.24, i64 50 285*9880d681SAndroid Build Coastguard Worker %inc22 = add nsw i64 %k.03, 1 286*9880d681SAndroid Build Coastguard Worker %exitcond10 = icmp ne i64 %inc22, 50 287*9880d681SAndroid Build Coastguard Worker br i1 %exitcond10, label %for.cond7.preheader, label %for.inc24 288*9880d681SAndroid Build Coastguard Worker 289*9880d681SAndroid Build Coastguard Workerfor.inc24: ; preds = %for.inc21 290*9880d681SAndroid Build Coastguard Worker %scevgep9 = getelementptr i32, i32* %B.addr.16, i64 2500 291*9880d681SAndroid Build Coastguard Worker %inc25 = add nsw i64 %j.05, 1 292*9880d681SAndroid Build Coastguard Worker %exitcond12 = icmp ne i64 %inc25, 50 293*9880d681SAndroid Build Coastguard Worker br i1 %exitcond12, label %for.cond4.preheader, label %for.inc27 294*9880d681SAndroid Build Coastguard Worker 295*9880d681SAndroid Build Coastguard Workerfor.inc27: ; preds = %for.inc24 296*9880d681SAndroid Build Coastguard Worker %scevgep11 = getelementptr i32, i32* %B.addr.08, i64 125000 297*9880d681SAndroid Build Coastguard Worker %inc28 = add nsw i64 %i.07, 1 298*9880d681SAndroid Build Coastguard Worker %exitcond13 = icmp ne i64 %inc28, 50 299*9880d681SAndroid Build Coastguard Worker br i1 %exitcond13, label %for.cond1.preheader, label %for.end29 300*9880d681SAndroid Build Coastguard Worker 301*9880d681SAndroid Build Coastguard Workerfor.end29: ; preds = %for.inc27 302*9880d681SAndroid Build Coastguard Worker ret void 303*9880d681SAndroid Build Coastguard Worker} 304