1 ; RUN: opt %loadPolly -pass-remarks-analysis="polly-scops" -polly-print-scops \
2 ; RUN: -disable-output < %s 2>&1 | FileCheck %s
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.
23 ; CHECK: Low complexity assumption: { : false }
25 define void @foo(ptr %A, ptr %B, ptr %C, ptr %D, ptr %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) {
35 %indvar = phi i64 [0, %entry], [%indvar.next, %loop.backedge]
36 switch i2 0, label %A0 [i2 1, label %A2 i2 2, label %A4]
39 %val.A0 = load float, ptr %A
40 store float %val.A0, ptr %A
44 %val.A2 = load float, ptr %A
45 store float %val.A2, ptr %A
46 %A2.cmp = icmp eq i64 %A2.p, 0
47 br i1 %A2.cmp, label %A1, label %A3
50 %val.A4 = load float, ptr %A
51 store float %val.A4, ptr %A
55 %val.A1 = load float, ptr %A
56 store float %val.A1, ptr %A
57 %A1.cmp = icmp eq i64 %A1.p, 0
58 br i1 %A1.cmp, label %B0, label %B2
61 %val.A3 = load float, ptr %A
62 store float %val.A3, ptr %A
63 %A3.cmp = icmp eq i64 %A3.p, 0
64 br i1 %A3.cmp, label %B2, label %B4
67 %val.B0 = load float, ptr %B
68 store float %val.B0, ptr %B
72 %val.B2 = load float, ptr %B
73 store float %val.B2, ptr %B
74 %B2.cmp = icmp eq i64 %B2.p, 0
75 br i1 %B2.cmp, label %B1, label %B3
78 %val.B4 = load float, ptr %B
79 store float %val.B4, ptr %B
83 %val.B1 = load float, ptr %B
84 store float %val.B1, ptr %B
85 %B1.cmp = icmp eq i64 %B1.p, 0
86 br i1 %B1.cmp, label %C0, label %C2
89 %val.B3 = load float, ptr %A
90 store float %val.B3, ptr %A
91 %B3.cmp = icmp eq i64 %A3.p, 0
92 br i1 %B3.cmp, label %C2, label %C4
95 %val.C0 = load float, ptr %C
96 store float %val.C0, ptr %C
100 %val.C2 = load float, ptr %C
101 store float %val.C2, ptr %C
102 %C2.cmp = icmp eq i64 %C2.p, 0
103 br i1 %C2.cmp, label %C1, label %C3
106 %val.C4 = load float, ptr %C
107 store float %val.C4, ptr %C
111 %val.C1 = load float, ptr %C
112 store float %val.C1, ptr %C
113 %C1.cmp = icmp eq i64 %C1.p, 0
114 br i1 %C1.cmp, label %D0, label %D2
117 %val.C3 = load float, ptr %C
118 store float %val.C3, ptr %C
119 %C3.cmp = icmp eq i64 %C3.p, 0
120 br i1 %C3.cmp, label %D2, label %D4
123 %val.D0 = load float, ptr %D
124 store float %val.D0, ptr %D
128 %val.D2 = load float, ptr %D
129 store float %val.D2, ptr %D
130 %D2.cmp = icmp eq i64 %D2.p, 0
131 br i1 %D2.cmp, label %D1, label %D3
134 %val.D4 = load float, ptr %D
135 store float %val.D4, ptr %D
139 %val.D1 = load float, ptr %D
140 store float %val.D1, ptr %D
141 %D1.cmp = icmp eq i64 %D1.p, 0
142 br i1 %D1.cmp, label %E0, label %E2
145 %val.D3 = load float, ptr %D
146 store float %val.D3, ptr %D
147 %D3.cmp = icmp eq i64 %D3.p, 0
148 br i1 %D3.cmp, label %E2, label %E4
151 %val.E0 = load float, ptr %E
152 store float %val.E0, ptr %E
156 %val.E2 = load float, ptr %E
157 store float %val.E2, ptr %E
158 %E2.cmp = icmp eq i64 %E2.p, 0
159 br i1 %E2.cmp, label %E1, label %E3
162 %val.E4 = load float, ptr %E
163 store float %val.E4, ptr %E
167 %val.E1 = load float, ptr %E
168 store float %val.E1, ptr %E
169 %E1.cmp = icmp eq i64 %E1.p, 0
170 br i1 %E1.cmp, label %F0, label %F2
173 %val.E3 = load float, ptr %E
174 store float %val.E3, ptr %E
175 %E3.cmp = icmp eq i64 %E3.p, 0
176 br i1 %E3.cmp, label %F2, label %F4
179 br label %loop.backedge
182 br label %loop.backedge
185 br label %loop.backedge
188 %indvar.next = add i64 %indvar, 1
189 %cmp = icmp ne i64 %indvar, 1000
190 br i1 %cmp, label %loop.header, label %exit