Skip to content

Commit 65390f9

Browse files
committed
[SimplifyCFG] Add test for #104567 (NFC)
1 parent 7d77fb2 commit 65390f9

File tree

1 file changed

+61
-0
lines changed

1 file changed

+61
-0
lines changed
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
2+
; RUN: opt -S -passes='simplifycfg<sink-common-insts;switch-to-lookup>' < %s | FileCheck %s
3+
4+
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
5+
6+
define void @pr104567(i8 %x, ptr %f) {
7+
; CHECK-LABEL: define void @pr104567(
8+
; CHECK-SAME: i8 [[X:%.*]], ptr [[F:%.*]]) {
9+
; CHECK-NEXT: [[START:.*:]]
10+
; CHECK-NEXT: [[Y:%.*]] = alloca [1 x i8], align 1
11+
; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 1, ptr nonnull [[Y]])
12+
; CHECK-NEXT: switch i8 [[X]], label %[[DEFAULT_UNREACHABLE:.*]] [
13+
; CHECK-NEXT: i8 0, label %[[BB4:.*]]
14+
; CHECK-NEXT: i8 1, label %[[BB3:.*]]
15+
; CHECK-NEXT: i8 2, label %[[BB2:.*]]
16+
; CHECK-NEXT: ]
17+
; CHECK: [[DEFAULT_UNREACHABLE]]:
18+
; CHECK-NEXT: unreachable
19+
; CHECK: [[BB4]]:
20+
; CHECK-NEXT: store i8 4, ptr [[Y]], align 1
21+
; CHECK-NEXT: br label %[[BB5:.*]]
22+
; CHECK: [[BB3]]:
23+
; CHECK-NEXT: store i8 5, ptr [[Y]], align 1
24+
; CHECK-NEXT: br label %[[BB5]]
25+
; CHECK: [[BB2]]:
26+
; CHECK-NEXT: store i8 6, ptr [[Y]], align 1
27+
; CHECK-NEXT: br label %[[BB5]]
28+
; CHECK: [[BB5]]:
29+
; CHECK-NEXT: call void [[F]](ptr [[Y]])
30+
; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 1, ptr nonnull [[Y]])
31+
; CHECK-NEXT: ret void
32+
;
33+
start:
34+
%y = alloca [1 x i8], align 1
35+
call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %y)
36+
switch i8 %x, label %default.unreachable [
37+
i8 0, label %bb4
38+
i8 1, label %bb3
39+
i8 2, label %bb2
40+
]
41+
42+
default.unreachable:
43+
unreachable
44+
45+
bb4:
46+
store i8 4, ptr %y, align 1
47+
br label %bb5
48+
49+
bb3:
50+
store i8 5, ptr %y, align 1
51+
br label %bb5
52+
53+
bb2:
54+
store i8 6, ptr %y, align 1
55+
br label %bb5
56+
57+
bb5:
58+
call void %f(ptr %y)
59+
call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %y)
60+
ret void
61+
}

0 commit comments

Comments
 (0)