1; RUN: opt %loadPolly -polly-stmt-granularity=bb -polly-print-scops -disable-output < %s | FileCheck %s 2 3; CHECK: Context: 4; CHECK-NEXT: { : } 5; CHECK: Assumed Context: 6; CHECK-NEXT: { : } 7; CHECK: Invalid Context: 8; CHECK-NEXT: { : false } 9; CHECK: Statements { 10; CHECK-NEXT: Stmt_for_cond40_preheader_4 11; CHECK-NEXT: Domain := 12; CHECK-NEXT: { Stmt_for_cond40_preheader_4[i0] : 0 <= i0 <= 1 }; 13; CHECK-NEXT: Schedule := 14; CHECK-NEXT: { Stmt_for_cond40_preheader_4[i0] -> [i0, 0] }; 15; CHECK-NEXT: MustWriteAccess := [Reduction Type: NONE] [Scalar: 0] 16; CHECK-NEXT: { Stmt_for_cond40_preheader_4[i0] -> MemRef_call[5, 5, 0] }; 17; CHECK-NEXT: Stmt_for_cond40_preheader_5 18; CHECK-NEXT: Domain := 19; CHECK-NEXT: { Stmt_for_cond40_preheader_5[i0] : 0 <= i0 <= 1 }; 20; CHECK-NEXT: Schedule := 21; CHECK-NEXT: { Stmt_for_cond40_preheader_5[i0] -> [i0, 1] }; 22; CHECK-NEXT: ReadAccess := [Reduction Type: NONE] [Scalar: 0] 23; CHECK-NEXT: { Stmt_for_cond40_preheader_5[i0] -> MemRef_call[5, 5, 0] }; 24; CHECK-NEXT: MustWriteAccess := [Reduction Type: NONE] [Scalar: 1] 25; CHECK-NEXT: { Stmt_for_cond40_preheader_5[i0] -> MemRef__pre160[] }; 26; CHECK-NEXT: } 27 28target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" 29target triple = "x86_64-unknown-linux-gnu" 30 31declare noalias i8* @malloc() 32 33define i32 @main() { 34entry: 35 %call = tail call noalias i8* @malloc() 36 %0 = bitcast i8* %call to [6 x [6 x [64 x i32]]]* 37 %arrayidx51.5.phi.trans.insert = getelementptr inbounds i8, i8* %call, i64 8960 38 %1 = bitcast i8* %arrayidx51.5.phi.trans.insert to i32* 39 br label %for.cond40.preheader.4 40 41for.end76: ; preds = %for.inc71.5 42 ret i32 %.pre160 43 44for.cond40.preheader.4: ; preds = %for.inc71.5, %entry 45 %t.0131 = phi i32 [ 0, %entry ], [ %inc75, %for.inc71.5 ] 46 %indvars.iv.next135 = add nuw nsw i64 0, 1 47 %2 = trunc i64 %indvars.iv.next135 to i32 48 %indvars.iv.next = add nuw nsw i64 0, 1 49 %exitcond = icmp eq i64 %indvars.iv.next, 64 50 %exitcond137 = icmp eq i32 %2, 6 51 %indvars.iv.next135.1 = add nuw nsw i64 1, 1 52 %indvars.iv.next.1 = add nuw nsw i64 0, 1 53 %exitcond.1 = icmp eq i64 %indvars.iv.next.1, 64 54 %lftr.wideiv.1 = trunc i64 %indvars.iv.next135.1 to i32 55 %exitcond137.1 = icmp eq i32 %lftr.wideiv.1, 6 56 %indvars.iv.next135.2 = add nuw nsw i64 2, 1 57 %indvars.iv.next.2 = add nuw nsw i64 0, 1 58 %exitcond.2 = icmp eq i64 %indvars.iv.next.2, 64 59 %lftr.wideiv.2 = trunc i64 %indvars.iv.next135.2 to i32 60 %exitcond137.2 = icmp eq i32 %lftr.wideiv.2, 6 61 %indvars.iv.next135.3 = add nuw nsw i64 3, 1 62 %indvars.iv.next.3 = add nuw nsw i64 0, 1 63 %exitcond.3 = icmp eq i64 %indvars.iv.next.3, 64 64 %lftr.wideiv.3 = trunc i64 %indvars.iv.next135.3 to i32 65 %exitcond137.3 = icmp eq i32 %lftr.wideiv.3, 6 66 %indvars.iv.next135.4 = add nuw nsw i64 4, 1 67 %indvars.iv.next.4 = add nuw nsw i64 0, 1 68 %exitcond.4 = icmp eq i64 %indvars.iv.next.4, 64 69 %lftr.wideiv.4 = trunc i64 %indvars.iv.next135.4 to i32 70 %exitcond137.4 = icmp eq i32 %lftr.wideiv.4, 6 71 %arrayidx23.5 = getelementptr inbounds [6 x [6 x [64 x i32]]], [6 x [6 x [64 x i32]]]* %0, i64 0, i64 5, i64 5, i64 0 72 store i32 36, i32* %arrayidx23.5, align 4 73 %indvars.iv.next.5 = add nuw nsw i64 0, 1 74 %exitcond.5 = icmp eq i64 %indvars.iv.next.5, 64 75 %indvars.iv.next143 = add nuw nsw i64 1, 1 76 %exitcond145 = icmp eq i64 %indvars.iv.next143, 64 77 %indvars.iv.next149 = add nuw nsw i64 0, 1 78 %lftr.wideiv150 = trunc i64 %indvars.iv.next149 to i32 79 %exitcond151 = icmp eq i32 %lftr.wideiv150, 6 80 %indvars.iv.next143.1 = add nuw nsw i64 1, 1 81 %exitcond145.1 = icmp eq i64 %indvars.iv.next143.1, 64 82 %indvars.iv.next149.1 = add nuw nsw i64 1, 1 83 %lftr.wideiv150.1 = trunc i64 %indvars.iv.next149.1 to i32 84 %exitcond151.1 = icmp eq i32 %lftr.wideiv150.1, 6 85 %indvars.iv.next143.2 = add nuw nsw i64 1, 1 86 %exitcond145.2 = icmp eq i64 %indvars.iv.next143.2, 64 87 %indvars.iv.next149.2 = add nuw nsw i64 2, 1 88 %lftr.wideiv150.2 = trunc i64 %indvars.iv.next149.2 to i32 89 %exitcond151.2 = icmp eq i32 %lftr.wideiv150.2, 6 90 %indvars.iv.next143.3 = add nuw nsw i64 1, 1 91 %exitcond145.3 = icmp eq i64 %indvars.iv.next143.3, 64 92 %indvars.iv.next149.3 = add nuw nsw i64 3, 1 93 %lftr.wideiv150.3 = trunc i64 %indvars.iv.next149.3 to i32 94 %exitcond151.3 = icmp eq i32 %lftr.wideiv150.3, 6 95 br label %for.body44.4 96 97for.body44.4: ; preds = %for.body44.4, %for.cond40.preheader.4 98 %indvars.iv142.4 = phi i64 [ 1, %for.cond40.preheader.4 ], [ %indvars.iv.next143.4, %for.body44.4 ] 99 %indvars.iv.next143.4 = add nuw nsw i64 %indvars.iv142.4, 1 100 %exitcond145.4 = icmp eq i64 %indvars.iv.next143.4, 64 101 br i1 %exitcond145.4, label %for.cond40.preheader.5, label %for.body44.4 102 103for.cond40.preheader.5: ; preds = %for.body44.4 104 %indvars.iv.next149.4 = add nuw nsw i64 4, 1 105 %lftr.wideiv150.4 = trunc i64 %indvars.iv.next149.4 to i32 106 %exitcond151.4 = icmp eq i32 %lftr.wideiv150.4, 6 107 %.pre160 = load i32, i32* %1, align 4 108 br label %for.body44.5 109 110for.body44.5: ; preds = %for.body44.5, %for.cond40.preheader.5 111 %indvars.iv142.5 = phi i64 [ 1, %for.cond40.preheader.5 ], [ %indvars.iv.next143.5, %for.body44.5 ] 112 %indvars.iv.next143.5 = add nuw nsw i64 %indvars.iv142.5, 1 113 %exitcond145.5 = icmp eq i64 %indvars.iv.next143.5, 64 114 br i1 %exitcond145.5, label %for.inc71.5, label %for.body44.5 115 116for.inc71.5: ; preds = %for.body44.5 117 %inc75 = add nuw nsw i32 %t.0131, 1 118 %exitcond155 = icmp eq i32 %inc75, 2 119 br i1 %exitcond155, label %for.end76, label %for.cond40.preheader.4 120} 121