@@ -11,14 +11,37 @@ define void @test_umin(i32 %N) {
11
11
; CHECK-NEXT: [[CMP5_NOT:%.*]] = icmp eq i32 [[N]], 0
12
12
; CHECK-NEXT: br i1 [[CMP5_NOT]], label [[FOR_COND_CLEANUP:%.*]], label [[FOR_BODY_PREHEADER:%.*]]
13
13
; CHECK: for.body.preheader:
14
+ ; CHECK-NEXT: br label [[FOR_BODY_PEEL2:%.*]]
15
+ ; CHECK: for.body.peel.begin:
16
+ ; CHECK-NEXT: br label [[FOR_BODY_PEEL:%.*]]
17
+ ; CHECK: for.body.peel:
18
+ ; CHECK-NEXT: [[COND_PEEL:%.*]] = tail call i32 @llvm.umin.i32(i32 0, i32 2)
19
+ ; CHECK-NEXT: tail call void @foo(i32 [[COND_PEEL]])
20
+ ; CHECK-NEXT: [[INC_PEEL:%.*]] = add nuw i32 0, 1
21
+ ; CHECK-NEXT: [[EXITCOND_NOT_PEEL:%.*]] = icmp eq i32 [[INC_PEEL]], [[N]]
22
+ ; CHECK-NEXT: br i1 [[EXITCOND_NOT_PEEL]], label [[FOR_COND_CLEANUP_LOOPEXIT:%.*]], label [[FOR_BODY_PEEL_NEXT:%.*]]
23
+ ; CHECK: for.body.peel.next:
24
+ ; CHECK-NEXT: br label [[FOR_BODY_PEEL3:%.*]]
25
+ ; CHECK: for.body.peel2:
26
+ ; CHECK-NEXT: [[COND_PEEL3:%.*]] = tail call i32 @llvm.umin.i32(i32 [[INC_PEEL]], i32 2)
27
+ ; CHECK-NEXT: tail call void @foo(i32 [[COND_PEEL3]])
28
+ ; CHECK-NEXT: [[INC_PEEL4:%.*]] = add nuw i32 [[INC_PEEL]], 1
29
+ ; CHECK-NEXT: [[EXITCOND_NOT_PEEL5:%.*]] = icmp eq i32 [[INC_PEEL4]], [[N]]
30
+ ; CHECK-NEXT: br i1 [[EXITCOND_NOT_PEEL5]], label [[FOR_COND_CLEANUP_LOOPEXIT]], label [[FOR_BODY_PEEL_NEXT1:%.*]]
31
+ ; CHECK: for.body.peel.next1:
32
+ ; CHECK-NEXT: br label [[FOR_BODY_PEEL_NEXT6:%.*]]
33
+ ; CHECK: for.body.peel.next6:
34
+ ; CHECK-NEXT: br label [[FOR_BODY_PREHEADER_PEEL_NEWPH:%.*]]
35
+ ; CHECK: for.body.preheader.peel.newph:
14
36
; CHECK-NEXT: br label [[FOR_BODY:%.*]]
15
37
; CHECK: for.body:
16
- ; CHECK-NEXT: [[I_06:%.*]] = phi i32 [ [[INC:%.*]], [[FOR_BODY]] ], [ 0, [[FOR_BODY_PREHEADER]] ]
17
- ; CHECK-NEXT: [[COND:%.*]] = tail call i32 @llvm.umin.i32(i32 [[I_06]], i32 2)
18
- ; CHECK-NEXT: tail call void @foo(i32 [[COND]])
38
+ ; CHECK-NEXT: [[I_06:%.*]] = phi i32 [ [[INC:%.*]], [[FOR_BODY]] ], [ [[INC_PEEL4]], [[FOR_BODY_PREHEADER_PEEL_NEWPH]] ]
39
+ ; CHECK-NEXT: tail call void @foo(i32 2)
19
40
; CHECK-NEXT: [[INC]] = add nuw i32 [[I_06]], 1
20
41
; CHECK-NEXT: [[EXITCOND_NOT:%.*]] = icmp eq i32 [[INC]], [[N]]
21
- ; CHECK-NEXT: br i1 [[EXITCOND_NOT]], label [[FOR_COND_CLEANUP_LOOPEXIT:%.*]], label [[FOR_BODY]]
42
+ ; CHECK-NEXT: br i1 [[EXITCOND_NOT]], label [[FOR_COND_CLEANUP_LOOPEXIT_LOOPEXIT:%.*]], label [[FOR_BODY]], !llvm.loop [[LOOP0:![0-9]+]]
43
+ ; CHECK: for.cond.cleanup.loopexit.loopexit:
44
+ ; CHECK-NEXT: br label [[FOR_COND_CLEANUP_LOOPEXIT]]
22
45
; CHECK: for.cond.cleanup.loopexit:
23
46
; CHECK-NEXT: br label [[FOR_COND_CLEANUP]]
24
47
; CHECK: for.cond.cleanup:
@@ -47,14 +70,37 @@ define void @test_umax(i32 %N) {
47
70
; CHECK-NEXT: [[CMP5_NOT:%.*]] = icmp eq i32 [[N]], 0
48
71
; CHECK-NEXT: br i1 [[CMP5_NOT]], label [[FOR_COND_CLEANUP:%.*]], label [[FOR_BODY_PREHEADER:%.*]]
49
72
; CHECK: for.body.preheader:
73
+ ; CHECK-NEXT: br label [[FOR_BODY_PEEL2:%.*]]
74
+ ; CHECK: for.body.peel.begin:
75
+ ; CHECK-NEXT: br label [[FOR_BODY_PEEL:%.*]]
76
+ ; CHECK: for.body.peel:
77
+ ; CHECK-NEXT: [[COND_PEEL:%.*]] = tail call i32 @llvm.umax.i32(i32 0, i32 2)
78
+ ; CHECK-NEXT: tail call void @foo(i32 [[COND_PEEL]])
79
+ ; CHECK-NEXT: [[INC_PEEL:%.*]] = add nuw i32 0, 1
80
+ ; CHECK-NEXT: [[EXITCOND_NOT_PEEL:%.*]] = icmp eq i32 [[INC_PEEL]], [[N]]
81
+ ; CHECK-NEXT: br i1 [[EXITCOND_NOT_PEEL]], label [[FOR_COND_CLEANUP_LOOPEXIT:%.*]], label [[FOR_BODY_PEEL_NEXT:%.*]]
82
+ ; CHECK: for.body.peel.next:
83
+ ; CHECK-NEXT: br label [[FOR_BODY_PEEL3:%.*]]
84
+ ; CHECK: for.body.peel2:
85
+ ; CHECK-NEXT: [[COND_PEEL3:%.*]] = tail call i32 @llvm.umax.i32(i32 [[INC_PEEL]], i32 2)
86
+ ; CHECK-NEXT: tail call void @foo(i32 [[COND_PEEL3]])
87
+ ; CHECK-NEXT: [[INC_PEEL4:%.*]] = add nuw i32 [[INC_PEEL]], 1
88
+ ; CHECK-NEXT: [[EXITCOND_NOT_PEEL5:%.*]] = icmp eq i32 [[INC_PEEL4]], [[N]]
89
+ ; CHECK-NEXT: br i1 [[EXITCOND_NOT_PEEL5]], label [[FOR_COND_CLEANUP_LOOPEXIT]], label [[FOR_BODY_PEEL_NEXT1:%.*]]
90
+ ; CHECK: for.body.peel.next1:
91
+ ; CHECK-NEXT: br label [[FOR_BODY_PEEL_NEXT6:%.*]]
92
+ ; CHECK: for.body.peel.next6:
93
+ ; CHECK-NEXT: br label [[FOR_BODY_PREHEADER_PEEL_NEWPH:%.*]]
94
+ ; CHECK: for.body.preheader.peel.newph:
50
95
; CHECK-NEXT: br label [[FOR_BODY:%.*]]
51
96
; CHECK: for.body:
52
- ; CHECK-NEXT: [[I_06:%.*]] = phi i32 [ [[INC:%.*]], [[FOR_BODY]] ], [ 0, [[FOR_BODY_PREHEADER]] ]
53
- ; CHECK-NEXT: [[COND:%.*]] = tail call i32 @llvm.umax.i32(i32 [[I_06]], i32 2)
54
- ; CHECK-NEXT: tail call void @foo(i32 [[COND]])
97
+ ; CHECK-NEXT: [[I_06:%.*]] = phi i32 [ [[INC:%.*]], [[FOR_BODY]] ], [ [[INC_PEEL4]], [[FOR_BODY_PREHEADER_PEEL_NEWPH]] ]
98
+ ; CHECK-NEXT: tail call void @foo(i32 [[I_06]])
55
99
; CHECK-NEXT: [[INC]] = add nuw i32 [[I_06]], 1
56
100
; CHECK-NEXT: [[EXITCOND_NOT:%.*]] = icmp eq i32 [[INC]], [[N]]
57
- ; CHECK-NEXT: br i1 [[EXITCOND_NOT]], label [[FOR_COND_CLEANUP_LOOPEXIT:%.*]], label [[FOR_BODY]]
101
+ ; CHECK-NEXT: br i1 [[EXITCOND_NOT]], label [[FOR_COND_CLEANUP_LOOPEXIT_LOOPEXIT:%.*]], label [[FOR_BODY]], !llvm.loop [[LOOP2:![0-9]+]]
102
+ ; CHECK: for.cond.cleanup.loopexit.loopexit:
103
+ ; CHECK-NEXT: br label [[FOR_COND_CLEANUP_LOOPEXIT]]
58
104
; CHECK: for.cond.cleanup.loopexit:
59
105
; CHECK-NEXT: br label [[FOR_COND_CLEANUP]]
60
106
; CHECK: for.cond.cleanup:
@@ -83,14 +129,37 @@ define void @test_smax(i32 %N) {
83
129
; CHECK-NEXT: [[CMP5:%.*]] = icmp slt i32 [[N]], 0
84
130
; CHECK-NEXT: br i1 [[CMP5]], label [[FOR_BODY_PREHEADER:%.*]], label [[FOR_COND_CLEANUP:%.*]]
85
131
; CHECK: for.body.preheader:
132
+ ; CHECK-NEXT: br label [[FOR_BODY_PEEL2:%.*]]
133
+ ; CHECK: for.body.peel.begin:
134
+ ; CHECK-NEXT: br label [[FOR_BODY_PEEL:%.*]]
135
+ ; CHECK: for.body.peel:
136
+ ; CHECK-NEXT: [[COND_PEEL:%.*]] = tail call i32 @llvm.smax.i32(i32 0, i32 -2)
137
+ ; CHECK-NEXT: tail call void @foo(i32 [[COND_PEEL]])
138
+ ; CHECK-NEXT: [[DEC_PEEL:%.*]] = add nsw i32 0, -1
139
+ ; CHECK-NEXT: [[CMP_PEEL:%.*]] = icmp sgt i32 [[DEC_PEEL]], [[N]]
140
+ ; CHECK-NEXT: br i1 [[CMP_PEEL]], label [[FOR_BODY_PEEL_NEXT:%.*]], label [[FOR_COND_CLEANUP_LOOPEXIT:%.*]]
141
+ ; CHECK: for.body.peel.next:
142
+ ; CHECK-NEXT: br label [[FOR_BODY_PEEL3:%.*]]
143
+ ; CHECK: for.body.peel2:
144
+ ; CHECK-NEXT: [[COND_PEEL3:%.*]] = tail call i32 @llvm.smax.i32(i32 [[DEC_PEEL]], i32 -2)
145
+ ; CHECK-NEXT: tail call void @foo(i32 [[COND_PEEL3]])
146
+ ; CHECK-NEXT: [[DEC_PEEL4:%.*]] = add nsw i32 [[DEC_PEEL]], -1
147
+ ; CHECK-NEXT: [[CMP_PEEL5:%.*]] = icmp sgt i32 [[DEC_PEEL4]], [[N]]
148
+ ; CHECK-NEXT: br i1 [[CMP_PEEL5]], label [[FOR_BODY_PEEL_NEXT1:%.*]], label [[FOR_COND_CLEANUP_LOOPEXIT]]
149
+ ; CHECK: for.body.peel.next1:
150
+ ; CHECK-NEXT: br label [[FOR_BODY_PEEL_NEXT6:%.*]]
151
+ ; CHECK: for.body.peel.next6:
152
+ ; CHECK-NEXT: br label [[FOR_BODY_PREHEADER_PEEL_NEWPH:%.*]]
153
+ ; CHECK: for.body.preheader.peel.newph:
86
154
; CHECK-NEXT: br label [[FOR_BODY:%.*]]
87
155
; CHECK: for.body:
88
- ; CHECK-NEXT: [[I_06:%.*]] = phi i32 [ [[DEC:%.*]], [[FOR_BODY]] ], [ 0, [[FOR_BODY_PREHEADER]] ]
89
- ; CHECK-NEXT: [[COND:%.*]] = tail call i32 @llvm.smax.i32(i32 [[I_06]], i32 -2)
90
- ; CHECK-NEXT: tail call void @foo(i32 [[COND]])
156
+ ; CHECK-NEXT: [[I_06:%.*]] = phi i32 [ [[DEC:%.*]], [[FOR_BODY]] ], [ [[DEC_PEEL4]], [[FOR_BODY_PREHEADER_PEEL_NEWPH]] ]
157
+ ; CHECK-NEXT: tail call void @foo(i32 -2)
91
158
; CHECK-NEXT: [[DEC]] = add nsw i32 [[I_06]], -1
92
159
; CHECK-NEXT: [[CMP:%.*]] = icmp sgt i32 [[DEC]], [[N]]
93
- ; CHECK-NEXT: br i1 [[CMP]], label [[FOR_BODY]], label [[FOR_COND_CLEANUP_LOOPEXIT:%.*]]
160
+ ; CHECK-NEXT: br i1 [[CMP]], label [[FOR_BODY]], label [[FOR_COND_CLEANUP_LOOPEXIT_LOOPEXIT:%.*]], !llvm.loop [[LOOP3:![0-9]+]]
161
+ ; CHECK: for.cond.cleanup.loopexit.loopexit:
162
+ ; CHECK-NEXT: br label [[FOR_COND_CLEANUP_LOOPEXIT]]
94
163
; CHECK: for.cond.cleanup.loopexit:
95
164
; CHECK-NEXT: br label [[FOR_COND_CLEANUP]]
96
165
; CHECK: for.cond.cleanup:
@@ -119,14 +188,37 @@ define void @test_smin(i32 %N) {
119
188
; CHECK-NEXT: [[CMP5:%.*]] = icmp slt i32 [[N]], 0
120
189
; CHECK-NEXT: br i1 [[CMP5]], label [[FOR_BODY_PREHEADER:%.*]], label [[FOR_COND_CLEANUP:%.*]]
121
190
; CHECK: for.body.preheader:
191
+ ; CHECK-NEXT: br label [[FOR_BODY_PEEL2:%.*]]
192
+ ; CHECK: for.body.peel.begin:
193
+ ; CHECK-NEXT: br label [[FOR_BODY_PEEL:%.*]]
194
+ ; CHECK: for.body.peel:
195
+ ; CHECK-NEXT: [[COND_PEEL:%.*]] = tail call i32 @llvm.smin.i32(i32 0, i32 -2)
196
+ ; CHECK-NEXT: tail call void @foo(i32 noundef signext [[COND_PEEL]])
197
+ ; CHECK-NEXT: [[DEC_PEEL:%.*]] = add nsw i32 0, -1
198
+ ; CHECK-NEXT: [[CMP_PEEL:%.*]] = icmp sgt i32 [[DEC_PEEL]], [[N]]
199
+ ; CHECK-NEXT: br i1 [[CMP_PEEL]], label [[FOR_BODY_PEEL_NEXT:%.*]], label [[FOR_COND_CLEANUP_LOOPEXIT:%.*]]
200
+ ; CHECK: for.body.peel.next:
201
+ ; CHECK-NEXT: br label [[FOR_BODY_PEEL3:%.*]]
202
+ ; CHECK: for.body.peel2:
203
+ ; CHECK-NEXT: [[COND_PEEL3:%.*]] = tail call i32 @llvm.smin.i32(i32 [[DEC_PEEL]], i32 -2)
204
+ ; CHECK-NEXT: tail call void @foo(i32 noundef signext [[COND_PEEL3]])
205
+ ; CHECK-NEXT: [[DEC_PEEL4:%.*]] = add nsw i32 [[DEC_PEEL]], -1
206
+ ; CHECK-NEXT: [[CMP_PEEL5:%.*]] = icmp sgt i32 [[DEC_PEEL4]], [[N]]
207
+ ; CHECK-NEXT: br i1 [[CMP_PEEL5]], label [[FOR_BODY_PEEL_NEXT1:%.*]], label [[FOR_COND_CLEANUP_LOOPEXIT]]
208
+ ; CHECK: for.body.peel.next1:
209
+ ; CHECK-NEXT: br label [[FOR_BODY_PEEL_NEXT6:%.*]]
210
+ ; CHECK: for.body.peel.next6:
211
+ ; CHECK-NEXT: br label [[FOR_BODY_PREHEADER_PEEL_NEWPH:%.*]]
212
+ ; CHECK: for.body.preheader.peel.newph:
122
213
; CHECK-NEXT: br label [[FOR_BODY:%.*]]
123
214
; CHECK: for.body:
124
- ; CHECK-NEXT: [[I_06:%.*]] = phi i32 [ [[DEC:%.*]], [[FOR_BODY]] ], [ 0, [[FOR_BODY_PREHEADER]] ]
125
- ; CHECK-NEXT: [[COND:%.*]] = tail call i32 @llvm.smin.i32(i32 [[I_06]], i32 -2)
126
- ; CHECK-NEXT: tail call void @foo(i32 noundef signext [[COND]])
215
+ ; CHECK-NEXT: [[I_06:%.*]] = phi i32 [ [[DEC:%.*]], [[FOR_BODY]] ], [ [[DEC_PEEL4]], [[FOR_BODY_PREHEADER_PEEL_NEWPH]] ]
216
+ ; CHECK-NEXT: tail call void @foo(i32 noundef signext [[I_06]])
127
217
; CHECK-NEXT: [[DEC]] = add nsw i32 [[I_06]], -1
128
218
; CHECK-NEXT: [[CMP:%.*]] = icmp sgt i32 [[DEC]], [[N]]
129
- ; CHECK-NEXT: br i1 [[CMP]], label [[FOR_BODY]], label [[FOR_COND_CLEANUP_LOOPEXIT:%.*]]
219
+ ; CHECK-NEXT: br i1 [[CMP]], label [[FOR_BODY]], label [[FOR_COND_CLEANUP_LOOPEXIT_LOOPEXIT:%.*]], !llvm.loop [[LOOP4:![0-9]+]]
220
+ ; CHECK: for.cond.cleanup.loopexit.loopexit:
221
+ ; CHECK-NEXT: br label [[FOR_COND_CLEANUP_LOOPEXIT]]
130
222
; CHECK: for.cond.cleanup.loopexit:
131
223
; CHECK-NEXT: br label [[FOR_COND_CLEANUP]]
132
224
; CHECK: for.cond.cleanup:
@@ -191,14 +283,14 @@ define void @test_max_count_threshold(i32 %N) {
191
283
; CHECK-NEXT: [[CMP5_NOT:%.*]] = icmp eq i32 [[N]], 0
192
284
; CHECK-NEXT: br i1 [[CMP5_NOT]], label [[FOR_COND_CLEANUP:%.*]], label [[FOR_BODY_PREHEADER:%.*]]
193
285
; CHECK: for.body.preheader:
194
- ; CHECK-NEXT: br label [[FOR_BODY :%.*]]
286
+ ; CHECK-NEXT: br label [[FOR_BODY1 :%.*]]
195
287
; CHECK: for.body:
196
- ; CHECK-NEXT: [[I_06 :%.*]] = phi i32 [ [[INC :%.*]], [[FOR_BODY ]] ], [ 0, [[FOR_BODY_PREHEADER]] ]
197
- ; CHECK-NEXT: [[COND :%.*]] = tail call i32 @llvm.umin.i32(i32 [[I_06 ]], i32 5)
198
- ; CHECK-NEXT: tail call void @foo(i32 [[COND ]])
199
- ; CHECK-NEXT: [[INC ]] = add nuw i32 [[I_06 ]], 1
200
- ; CHECK-NEXT: [[EXITCOND_NOT :%.*]] = icmp eq i32 [[INC ]], [[N]]
201
- ; CHECK-NEXT: br i1 [[EXITCOND_NOT ]], label [[FOR_COND_CLEANUP_LOOPEXIT:%.*]], label [[FOR_BODY ]]
288
+ ; CHECK-NEXT: [[I_6 :%.*]] = phi i32 [ [[INC1 :%.*]], [[FOR_BODY1 ]] ], [ 0, [[FOR_BODY_PREHEADER]] ]
289
+ ; CHECK-NEXT: [[COND1 :%.*]] = tail call i32 @llvm.umin.i32(i32 [[I_6 ]], i32 5)
290
+ ; CHECK-NEXT: tail call void @foo(i32 [[COND1 ]])
291
+ ; CHECK-NEXT: [[INC1 ]] = add nuw i32 [[I_6 ]], 1
292
+ ; CHECK-NEXT: [[EXITCOND_NOT1 :%.*]] = icmp eq i32 [[INC1 ]], [[N]]
293
+ ; CHECK-NEXT: br i1 [[EXITCOND_NOT1 ]], label [[FOR_COND_CLEANUP_LOOPEXIT:%.*]], label [[FOR_BODY1 ]]
202
294
; CHECK: for.cond.cleanup.loopexit:
203
295
; CHECK-NEXT: br label [[FOR_COND_CLEANUP]]
204
296
; CHECK: for.cond.cleanup:
@@ -227,14 +319,14 @@ define void @test_wrap(i8 %N) {
227
319
; CHECK-NEXT: [[CMP5_NOT:%.*]] = icmp eq i8 [[N]], 0
228
320
; CHECK-NEXT: br i1 [[CMP5_NOT]], label [[FOR_COND_CLEANUP:%.*]], label [[FOR_BODY_PREHEADER:%.*]]
229
321
; CHECK: for.body.preheader:
230
- ; CHECK-NEXT: br label [[FOR_BODY1 :%.*]]
322
+ ; CHECK-NEXT: br label [[FOR_BODY :%.*]]
231
323
; CHECK: for.body:
232
- ; CHECK-NEXT: [[I_06:%.*]] = phi i8 [ [[INC1 :%.*]], [[FOR_BODY1 ]] ], [ 0, [[FOR_BODY_PREHEADER]] ]
233
- ; CHECK-NEXT: [[COND1 :%.*]] = tail call i8 @llvm.umin.i8(i8 [[I_06]], i8 -2)
234
- ; CHECK-NEXT: tail call void @bar(i8 [[COND1 ]])
235
- ; CHECK-NEXT: [[INC1 ]] = add i8 [[I_06]], 127
236
- ; CHECK-NEXT: [[EXITCOND_NOT1 :%.*]] = icmp eq i8 [[INC1 ]], [[N]]
237
- ; CHECK-NEXT: br i1 [[EXITCOND_NOT1 ]], label [[FOR_COND_CLEANUP_LOOPEXIT:%.*]], label [[FOR_BODY1 ]]
324
+ ; CHECK-NEXT: [[I_06:%.*]] = phi i8 [ [[INC :%.*]], [[FOR_BODY ]] ], [ 0, [[FOR_BODY_PREHEADER]] ]
325
+ ; CHECK-NEXT: [[COND :%.*]] = tail call i8 @llvm.umin.i8(i8 [[I_06]], i8 -2)
326
+ ; CHECK-NEXT: tail call void @bar(i8 [[COND ]])
327
+ ; CHECK-NEXT: [[INC ]] = add i8 [[I_06]], 127
328
+ ; CHECK-NEXT: [[EXITCOND_NOT :%.*]] = icmp eq i8 [[INC ]], [[N]]
329
+ ; CHECK-NEXT: br i1 [[EXITCOND_NOT ]], label [[FOR_COND_CLEANUP_LOOPEXIT:%.*]], label [[FOR_BODY ]]
238
330
; CHECK: for.cond.cleanup.loopexit:
239
331
; CHECK-NEXT: br label [[FOR_COND_CLEANUP]]
240
332
; CHECK: for.cond.cleanup:
@@ -255,3 +347,10 @@ for.body:
255
347
for.cond.cleanup:
256
348
ret void
257
349
}
350
+ ;.
351
+ ; CHECK: [[LOOP0]] = distinct !{[[LOOP0]], [[META1:![0-9]+]]}
352
+ ; CHECK: [[META1]] = !{!"llvm.loop.peeled.count", i32 2}
353
+ ; CHECK: [[LOOP2]] = distinct !{[[LOOP2]], [[META1]]}
354
+ ; CHECK: [[LOOP3]] = distinct !{[[LOOP3]], [[META1]]}
355
+ ; CHECK: [[LOOP4]] = distinct !{[[LOOP4]], [[META1]]}
356
+ ;.
0 commit comments