1; RUN: opt %loadPolly -pass-remarks-analysis="polly-scops" -polly-scops \ 2; RUN: < %s 2>&1 | FileCheck %s 3 4; We build a scop of the following form to check that the domain construction 5; does not take a huge amount of time, but that we instead just bail out. 6; 7; loop.header 8; / | \ \ 9; A0 A2 A4 \ 10; \ / \ / \ 11; A1 A3 \ 12; / \ / \ | 13; B0 B2 B4 | 14; \ / \ / | 15; B1 B3 ^ 16; / \ / \ | 17; C0 C2 C4 | 18; \ / \ / / 19; C1 C3 / 20; \ / / 21; loop backedge 22 23; CHECK: Low complexity assumption: { : false } 24 25define void @foo(float* %A, float* %B, float* %C, float* %D, float* %E, 26 i64 %A1.p, i64 %A2.p, i64 %A3.p, 27 i64 %B1.p, i64 %B2.p, i64 %B3.p, 28 i64 %C1.p, i64 %C2.p, i64 %C3.p, 29 i64 %D1.p, i64 %D2.p, i64 %D3.p, 30 i64 %E1.p, i64 %E2.p, i64 %E3.p) { 31entry: 32 br label %loop.header 33 34loop.header: 35 %indvar = phi i64 [0, %entry], [%indvar.next, %loop.backedge] 36 switch i2 0, label %A0 [i2 1, label %A2 i2 2, label %A4] 37 38A0: 39 %val.A0 = load float, float* %A 40 store float %val.A0, float* %A 41 br label %A1 42 43A2: 44 %val.A2 = load float, float* %A 45 store float %val.A2, float* %A 46 %A2.cmp = icmp eq i64 %A2.p, 0 47 br i1 %A2.cmp, label %A1, label %A3 48 49A4: 50 %val.A4 = load float, float* %A 51 store float %val.A4, float* %A 52 br label %A3 53 54A1: 55 %val.A1 = load float, float* %A 56 store float %val.A1, float* %A 57 %A1.cmp = icmp eq i64 %A1.p, 0 58 br i1 %A1.cmp, label %B0, label %B2 59 60A3: 61 %val.A3 = load float, float* %A 62 store float %val.A3, float* %A 63 %A3.cmp = icmp eq i64 %A3.p, 0 64 br i1 %A3.cmp, label %B2, label %B4 65 66B0: 67 %val.B0 = load float, float* %B 68 store float %val.B0, float* %B 69 br label %B1 70 71B2: 72 %val.B2 = load float, float* %B 73 store float %val.B2, float* %B 74 %B2.cmp = icmp eq i64 %B2.p, 0 75 br i1 %B2.cmp, label %B1, label %B3 76 77B4: 78 %val.B4 = load float, float* %B 79 store float %val.B4, float* %B 80 br label %B3 81 82B1: 83 %val.B1 = load float, float* %B 84 store float %val.B1, float* %B 85 %B1.cmp = icmp eq i64 %B1.p, 0 86 br i1 %B1.cmp, label %C0, label %C2 87 88B3: 89 %val.B3 = load float, float* %A 90 store float %val.B3, float* %A 91 %B3.cmp = icmp eq i64 %A3.p, 0 92 br i1 %B3.cmp, label %C2, label %C4 93 94C0: 95 %val.C0 = load float, float* %C 96 store float %val.C0, float* %C 97 br label %C1 98 99C2: 100 %val.C2 = load float, float* %C 101 store float %val.C2, float* %C 102 %C2.cmp = icmp eq i64 %C2.p, 0 103 br i1 %C2.cmp, label %C1, label %C3 104 105C4: 106 %val.C4 = load float, float* %C 107 store float %val.C4, float* %C 108 br label %C3 109 110C1: 111 %val.C1 = load float, float* %C 112 store float %val.C1, float* %C 113 %C1.cmp = icmp eq i64 %C1.p, 0 114 br i1 %C1.cmp, label %D0, label %D2 115 116C3: 117 %val.C3 = load float, float* %C 118 store float %val.C3, float* %C 119 %C3.cmp = icmp eq i64 %C3.p, 0 120 br i1 %C3.cmp, label %D2, label %D4 121 122D0: 123 %val.D0 = load float, float* %D 124 store float %val.D0, float* %D 125 br label %D1 126 127D2: 128 %val.D2 = load float, float* %D 129 store float %val.D2, float* %D 130 %D2.cmp = icmp eq i64 %D2.p, 0 131 br i1 %D2.cmp, label %D1, label %D3 132 133D4: 134 %val.D4 = load float, float* %D 135 store float %val.D4, float* %D 136 br label %D3 137 138D1: 139 %val.D1 = load float, float* %D 140 store float %val.D1, float* %D 141 %D1.cmp = icmp eq i64 %D1.p, 0 142 br i1 %D1.cmp, label %E0, label %E2 143 144D3: 145 %val.D3 = load float, float* %D 146 store float %val.D3, float* %D 147 %D3.cmp = icmp eq i64 %D3.p, 0 148 br i1 %D3.cmp, label %E2, label %E4 149 150E0: 151 %val.E0 = load float, float* %E 152 store float %val.E0, float* %E 153 br label %E1 154 155E2: 156 %val.E2 = load float, float* %E 157 store float %val.E2, float* %E 158 %E2.cmp = icmp eq i64 %E2.p, 0 159 br i1 %E2.cmp, label %E1, label %E3 160 161E4: 162 %val.E4 = load float, float* %E 163 store float %val.E4, float* %E 164 br label %E3 165 166E1: 167 %val.E1 = load float, float* %E 168 store float %val.E1, float* %E 169 %E1.cmp = icmp eq i64 %E1.p, 0 170 br i1 %E1.cmp, label %F0, label %F2 171 172E3: 173 %val.E3 = load float, float* %E 174 store float %val.E3, float* %E 175 %E3.cmp = icmp eq i64 %E3.p, 0 176 br i1 %E3.cmp, label %F2, label %F4 177 178F0: 179 br label %loop.backedge 180 181F2: 182 br label %loop.backedge 183 184F4: 185 br label %loop.backedge 186 187loop.backedge: 188 %indvar.next = add i64 %indvar, 1 189 %cmp = icmp ne i64 %indvar, 1000 190 br i1 %cmp, label %loop.header, label %exit 191 192exit: 193 ret void 194 195} 196