1*35f70200SMichael Kruse; RUN: opt %loadPolly -polly-ast -analyze < %s | FileCheck %s 2*35f70200SMichael Krusetarget 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" 3*35f70200SMichael Kruse 4*35f70200SMichael Kruse@A = common global [1024 x i32] zeroinitializer, align 16 ; <[1024 x i32]*> [#uses=3] 5*35f70200SMichael Kruse 6*35f70200SMichael Krusedefine void @bar(i64 %n) nounwind { 7*35f70200SMichael Krusebb: 8*35f70200SMichael Kruse fence seq_cst 9*35f70200SMichael Kruse br label %bb1 10*35f70200SMichael Kruse 11*35f70200SMichael Krusebb1: ; preds = %bb3, %bb 12*35f70200SMichael Kruse %i.0 = phi i64 [ 0, %bb ], [ %tmp, %bb3 ] ; <i64> [#uses=3] 13*35f70200SMichael Kruse %scevgep = getelementptr [1024 x i32], [1024 x i32]* @A, i64 0, i64 %i.0 ; <i32*> [#uses=1] 14*35f70200SMichael Kruse %exitcond = icmp ne i64 %i.0, %n ; <i1> [#uses=1] 15*35f70200SMichael Kruse br i1 %exitcond, label %bb2, label %bb4 16*35f70200SMichael Kruse 17*35f70200SMichael Krusebb2: ; preds = %bb1 18*35f70200SMichael Kruse store i32 1, i32* %scevgep 19*35f70200SMichael Kruse br label %bb3 20*35f70200SMichael Kruse 21*35f70200SMichael Krusebb3: ; preds = %bb2 22*35f70200SMichael Kruse %tmp = add nsw i64 %i.0, 1 ; <i64> [#uses=1] 23*35f70200SMichael Kruse br label %bb1 24*35f70200SMichael Kruse 25*35f70200SMichael Krusebb4: ; preds = %bb1 26*35f70200SMichael Kruse fence seq_cst 27*35f70200SMichael Kruse ret void 28*35f70200SMichael Kruse} 29*35f70200SMichael Kruse 30*35f70200SMichael Krusedefine i32 @main() nounwind { 31*35f70200SMichael Krusebb: 32*35f70200SMichael Kruse call void @llvm.memset.p0i8.i64(i8* bitcast ([1024 x i32]* @A to i8*), i8 0, i64 4096, i32 1, i1 false) 33*35f70200SMichael Kruse call void @bar(i64 1024) 34*35f70200SMichael Kruse br label %bb1 35*35f70200SMichael Kruse 36*35f70200SMichael Krusebb1: ; preds = %bb7, %bb 37*35f70200SMichael Kruse %indvar = phi i64 [ %indvar.next, %bb7 ], [ 0, %bb ] ; <i64> [#uses=3] 38*35f70200SMichael Kruse %scevgep = getelementptr [1024 x i32], [1024 x i32]* @A, i64 0, i64 %indvar ; <i32*> [#uses=1] 39*35f70200SMichael Kruse %i.0 = trunc i64 %indvar to i32 ; <i32> [#uses=1] 40*35f70200SMichael Kruse %tmp = icmp slt i32 %i.0, 1024 ; <i1> [#uses=1] 41*35f70200SMichael Kruse br i1 %tmp, label %bb2, label %bb8 42*35f70200SMichael Kruse 43*35f70200SMichael Krusebb2: ; preds = %bb1 44*35f70200SMichael Kruse %tmp3 = load i32, i32* %scevgep ; <i32> [#uses=1] 45*35f70200SMichael Kruse %tmp4 = icmp ne i32 %tmp3, 1 ; <i1> [#uses=1] 46*35f70200SMichael Kruse br i1 %tmp4, label %bb5, label %bb6 47*35f70200SMichael Kruse 48*35f70200SMichael Krusebb5: ; preds = %bb2 49*35f70200SMichael Kruse br label %bb9 50*35f70200SMichael Kruse 51*35f70200SMichael Krusebb6: ; preds = %bb2 52*35f70200SMichael Kruse br label %bb7 53*35f70200SMichael Kruse 54*35f70200SMichael Krusebb7: ; preds = %bb6 55*35f70200SMichael Kruse %indvar.next = add i64 %indvar, 1 ; <i64> [#uses=1] 56*35f70200SMichael Kruse br label %bb1 57*35f70200SMichael Kruse 58*35f70200SMichael Krusebb8: ; preds = %bb1 59*35f70200SMichael Kruse br label %bb9 60*35f70200SMichael Kruse 61*35f70200SMichael Krusebb9: ; preds = %bb8, %bb5 62*35f70200SMichael Kruse %.0 = phi i32 [ 1, %bb5 ], [ 0, %bb8 ] ; <i32> [#uses=1] 63*35f70200SMichael Kruse ret i32 %.0 64*35f70200SMichael Kruse} 65*35f70200SMichael Kruse 66*35f70200SMichael Krusedeclare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i32, i1) nounwind 67*35f70200SMichael Kruse 68*35f70200SMichael Kruse; CHECK: for (int c0 = 0; c0 < n; c0 += 1) 69*35f70200SMichael Kruse; CHECK: Stmt_bb2(c0); 70*35f70200SMichael Kruse 71