Skip to content

Commit 0ce3e6e

Browse files
committed
Add more tests
1 parent 41c4da0 commit 0ce3e6e

File tree

1 file changed

+69
-0
lines changed

1 file changed

+69
-0
lines changed

llvm/test/Transforms/SimplifyCFG/switch-range-to-icmp.ll

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -303,4 +303,73 @@ else:
303303
ret i32 %i1
304304
}
305305

306+
define i32 @one_case_1(i32 %x) {
307+
; CHECK-LABEL: @one_case_1(
308+
; CHECK-NEXT: entry:
309+
; CHECK-NEXT: [[X_OFF:%.*]] = add i32 [[X:%.*]], -5
310+
; CHECK-NEXT: [[SWITCH:%.*]] = icmp ult i32 [[X_OFF]], 3
311+
; CHECK-NEXT: br i1 [[SWITCH]], label [[A:%.*]], label [[B:%.*]]
312+
; CHECK: common.ret:
313+
; CHECK-NEXT: [[COMMON_RET_OP:%.*]] = phi i32 [ [[TMP0:%.*]], [[A]] ], [ [[TMP1:%.*]], [[B]] ]
314+
; CHECK-NEXT: ret i32 [[COMMON_RET_OP]]
315+
; CHECK: a:
316+
; CHECK-NEXT: [[TMP0]] = call i32 @f(i32 0)
317+
; CHECK-NEXT: br label [[COMMON_RET:%.*]]
318+
; CHECK: b:
319+
; CHECK-NEXT: [[TMP1]] = call i32 @f(i32 1)
320+
; CHECK-NEXT: br label [[COMMON_RET]]
321+
;
322+
entry:
323+
switch i32 %x, label %unreachable [
324+
i32 5, label %a
325+
i32 6, label %a
326+
i32 7, label %a
327+
i32 10, label %b
328+
]
329+
330+
unreachable:
331+
unreachable
332+
a:
333+
%0 = call i32 @f(i32 0)
334+
ret i32 %0
335+
b:
336+
%1 = call i32 @f(i32 1)
337+
ret i32 %1
338+
}
339+
340+
define i32 @one_case_2(i32 %x) {
341+
; CHECK-LABEL: @one_case_2(
342+
; CHECK-NEXT: entry:
343+
; CHECK-NEXT: [[X_OFF:%.*]] = add i32 [[X:%.*]], -5
344+
; CHECK-NEXT: [[SWITCH:%.*]] = icmp ult i32 [[X_OFF]], 1
345+
; CHECK-NEXT: br i1 [[SWITCH]], label [[A:%.*]], label [[B:%.*]]
346+
; CHECK: common.ret:
347+
; CHECK-NEXT: [[COMMON_RET_OP:%.*]] = phi i32 [ [[TMP0:%.*]], [[A]] ], [ [[TMP1:%.*]], [[B]] ]
348+
; CHECK-NEXT: ret i32 [[COMMON_RET_OP]]
349+
; CHECK: a:
350+
; CHECK-NEXT: [[TMP0]] = call i32 @f(i32 0)
351+
; CHECK-NEXT: br label [[COMMON_RET:%.*]]
352+
; CHECK: b:
353+
; CHECK-NEXT: [[TMP1]] = call i32 @f(i32 1)
354+
; CHECK-NEXT: br label [[COMMON_RET]]
355+
;
356+
entry:
357+
switch i32 %x, label %unreachable [
358+
i32 5, label %a
359+
i32 10, label %b
360+
i32 11, label %b
361+
i32 12, label %b
362+
i32 13, label %b
363+
]
364+
365+
unreachable:
366+
unreachable
367+
a:
368+
%0 = call i32 @f(i32 0)
369+
ret i32 %0
370+
b:
371+
%1 = call i32 @f(i32 1)
372+
ret i32 %1
373+
}
374+
306375
declare void @bar(ptr nonnull dereferenceable(4))

0 commit comments

Comments
 (0)