1; RUN: opt %loadPolly -polly-detect -analyze < %s \ 2; RUN: | FileCheck %s -check-prefix=DETECT 3; RUN: opt %loadPolly -polly-scops -analyze < %s | FileCheck %s 4; 5; DETECT: Valid Region for Scop: for => return 6; 7; Check that this SCoP is allowed, even though the number of disjunct memory accesses of A 8; is 11, greater than RunTimeChecksMaxAccessDisjuncts. 9; 10; CHECK: Function: func 11; CHECK-NEXT: Region: %for---%return 12 13define void @func(i64 %n, double* nonnull %A, double * nonnull %B, i64 %d) { 14entry: 15 br label %for 16for: 17 %j = phi i64 [0, %entry], [%j.inc, %inc] 18 %j.cmp = icmp slt i64 %j, %n 19 br i1 %j.cmp, label %body, label %exit 20 21body: 22 %add.i.i = add nsw i64 1, %j 23 %sub.i.i = sub nsw i64 %add.i.i, 1 24 %cmp.i.i.i = icmp sgt i64 %sub.i.i, 0 25 %cond.i.i.i = select i1 %cmp.i.i.i, i64 %sub.i.i, i64 0 26 %mul.i.i = mul nsw i64 %cond.i.i.i, 7 27 %sub1.i.i = sub nsw i64 1, %j 28 %add2.i.i = add nsw i64 %sub1.i.i, 1 29 %cmp.i8.i.i = icmp sgt i64 %add2.i.i, 0 30 %cond.i11.i.i = select i1 %cmp.i8.i.i, i64 %add2.i.i, i64 0 31 %mul4.i.i = mul nsw i64 %cond.i11.i.i, 7 32 %add5.i.i = add nsw i64 %mul.i.i, %mul4.i.i 33 %add.i113.i = add nsw i64 1, %j 34 %sub.i114.i = sub nsw i64 %add.i113.i, 3 35 %cmp.i.i115.i = icmp sgt i64 %sub.i114.i, 0 36 %cond.i.i118.i = select i1 %cmp.i.i115.i, i64 %sub.i114.i, i64 0 37 %mul.i119.i = mul nsw i64 %cond.i.i118.i, 9 38 %sub1.i120.i = sub nsw i64 1, %j 39 %add2.i121.i = add nsw i64 %sub1.i120.i, 3 40 %cmp.i8.i122.i = icmp sgt i64 %add2.i121.i, 0 41 %cond.i11.i126.i = select i1 %cmp.i8.i122.i, i64 %add2.i121.i, i64 0 42 %mul4.i127.i = mul nsw i64 %cond.i11.i126.i, 9 43 %add5.i128.i = add nsw i64 %mul.i119.i, %mul4.i127.i 44 %add.i = add nsw i64 %add5.i.i, %add5.i128.i 45 %add.i89.i = add nsw i64 1, %j 46 %sub.i90.i = sub nsw i64 %add.i89.i, 4 47 %cmp.i.i91.i = icmp sgt i64 %sub.i90.i, 0 48 %cond.i.i94.i = select i1 %cmp.i.i91.i, i64 %sub.i90.i, i64 0 49 %mul.i95.i = mul nsw i64 %cond.i.i94.i, 11 50 %sub1.i96.i = sub nsw i64 1, %j 51 %add2.i97.i = add nsw i64 %sub1.i96.i, 4 52 %cmp.i8.i98.i = icmp sgt i64 %add2.i97.i, 0 53 %cond.i11.i102.i = select i1 %cmp.i8.i98.i, i64 %add2.i97.i, i64 0 54 %mul4.i103.i = mul nsw i64 %cond.i11.i102.i, 11 55 %add5.i104.i = add nsw i64 %mul.i95.i, %mul4.i103.i 56 %add3.i = add nsw i64 %add.i, %add5.i104.i 57 %add.i65.i = add nsw i64 1, %j 58 %sub.i66.i = sub nsw i64 %add.i65.i, 6 59 %cmp.i.i67.i = icmp sgt i64 %sub.i66.i, 0 60 %cond.i.i70.i = select i1 %cmp.i.i67.i, i64 %sub.i66.i, i64 0 61 %mul.i71.i = mul nsw i64 %cond.i.i70.i, 13 62 %sub1.i72.i = sub nsw i64 1, %j 63 %add2.i73.i = add nsw i64 %sub1.i72.i, 6 64 %cmp.i8.i74.i = icmp sgt i64 %add2.i73.i, 0 65 %cond.i11.i78.i = select i1 %cmp.i8.i74.i, i64 %add2.i73.i, i64 0 66 %mul4.i79.i = mul nsw i64 %cond.i11.i78.i, 13 67 %add5.i80.i = add nsw i64 %mul.i71.i, %mul4.i79.i 68 %add5.i = add nsw i64 %add3.i, %add5.i80.i 69 %add.i41.i = add nsw i64 1, %j 70 %sub.i42.i = sub nsw i64 %add.i41.i, 8 71 %cmp.i.i43.i = icmp sgt i64 %sub.i42.i, 0 72 %cond.i.i46.i = select i1 %cmp.i.i43.i, i64 %sub.i42.i, i64 0 73 %mul.i47.i = mul nsw i64 %cond.i.i46.i, 17 74 %sub1.i48.i = sub nsw i64 1, %j 75 %add2.i49.i = add nsw i64 %sub1.i48.i, 8 76 %cmp.i8.i50.i = icmp sgt i64 %add2.i49.i, 0 77 %cond.i11.i54.i = select i1 %cmp.i8.i50.i, i64 %add2.i49.i, i64 0 78 %mul4.i55.i = mul nsw i64 %cond.i11.i54.i, 17 79 %add5.i56.i = add nsw i64 %mul.i47.i, %mul4.i55.i 80 %add7.i = add nsw i64 %add5.i, %add5.i56.i 81 %add.i17.i = add nsw i64 1, %j 82 %sub.i18.i = sub nsw i64 %add.i17.i, 10 83 %cmp.i.i19.i = icmp sgt i64 %sub.i18.i, 0 84 %cond.i.i22.i = select i1 %cmp.i.i19.i, i64 %sub.i18.i, i64 0 85 %mul.i23.i = mul nsw i64 %cond.i.i22.i, 19 86 %sub1.i24.i = sub nsw i64 1, %j 87 %add2.i25.i = add nsw i64 %sub1.i24.i, 10 88 %cmp.i8.i26.i = icmp sgt i64 %add2.i25.i, 0 89 %cond.i11.i30.i = select i1 %cmp.i8.i26.i, i64 %add2.i25.i, i64 0 90 %mul4.i31.i = mul nsw i64 %cond.i11.i30.i, 19 91 %add5.i32.i = add nsw i64 %mul.i23.i, %mul4.i31.i 92 %idxprom = add nsw i64 %add7.i, %add5.i32.i 93 94 %A_idx = getelementptr inbounds double, double* %A, i64 %idxprom 95 %val = load double, double* %A_idx 96 %B_idx = getelementptr inbounds double, double* %B, i64 %j 97 store double %val, double* %B_idx 98 br label %inc 99 100inc: 101 %j.inc = add nuw nsw i64 %j, 1 102 br label %for 103 104exit: 105 br label %return 106return: 107 ret void 108} 109 110