Skip to content

Commit cb6f3c1

Browse files
committed
Add a test for missing folding
1 parent a6d932b commit cb6f3c1

File tree

1 file changed

+92
-0
lines changed

1 file changed

+92
-0
lines changed
Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 4
2+
; RUN: opt < %s -S -passes='simplifycfg<switch-to-lookup>' | FileCheck %s
3+
4+
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
5+
6+
define { i1, i8 } @f(i8 noundef %character) unnamed_addr {
7+
; CHECK-LABEL: define { i1, i8 } @f(
8+
; CHECK-SAME: i8 noundef [[CHARACTER:%.*]]) unnamed_addr {
9+
; CHECK-NEXT: start:
10+
; CHECK-NEXT: switch i8 [[CHARACTER]], label [[BB11:%.*]] [
11+
; CHECK-NEXT: i8 48, label [[BB2:%.*]]
12+
; CHECK-NEXT: i8 49, label [[BB3:%.*]]
13+
; CHECK-NEXT: i8 50, label [[BB4:%.*]]
14+
; CHECK-NEXT: i8 51, label [[BB5:%.*]]
15+
; CHECK-NEXT: i8 52, label [[BB6:%.*]]
16+
; CHECK-NEXT: i8 53, label [[BB7:%.*]]
17+
; CHECK-NEXT: i8 54, label [[BB8:%.*]]
18+
; CHECK-NEXT: i8 55, label [[BB9:%.*]]
19+
; CHECK-NEXT: i8 56, label [[BB10:%.*]]
20+
; CHECK-NEXT: ]
21+
; CHECK: bb2:
22+
; CHECK-NEXT: br label [[BB11]]
23+
; CHECK: bb3:
24+
; CHECK-NEXT: br label [[BB11]]
25+
; CHECK: bb4:
26+
; CHECK-NEXT: br label [[BB11]]
27+
; CHECK: bb5:
28+
; CHECK-NEXT: br label [[BB11]]
29+
; CHECK: bb6:
30+
; CHECK-NEXT: br label [[BB11]]
31+
; CHECK: bb7:
32+
; CHECK-NEXT: br label [[BB11]]
33+
; CHECK: bb8:
34+
; CHECK-NEXT: br label [[BB11]]
35+
; CHECK: bb9:
36+
; CHECK-NEXT: br label [[BB11]]
37+
; CHECK: bb10:
38+
; CHECK-NEXT: br label [[BB11]]
39+
; CHECK: bb11:
40+
; CHECK-NEXT: [[_0_SROA_11_0:%.*]] = phi i8 [ 8, [[BB10]] ], [ 7, [[BB9]] ], [ 6, [[BB8]] ], [ 5, [[BB7]] ], [ 4, [[BB6]] ], [ 3, [[BB5]] ], [ 2, [[BB4]] ], [ 1, [[BB3]] ], [ 0, [[BB2]] ], [ undef, [[START:%.*]] ]
41+
; CHECK-NEXT: [[_0_SROA_0_0:%.*]] = phi i1 [ true, [[BB10]] ], [ true, [[BB9]] ], [ true, [[BB8]] ], [ true, [[BB7]] ], [ true, [[BB6]] ], [ true, [[BB5]] ], [ true, [[BB4]] ], [ true, [[BB3]] ], [ true, [[BB2]] ], [ false, [[START]] ]
42+
; CHECK-NEXT: [[TMP0:%.*]] = insertvalue { i1, i8 } poison, i1 [[_0_SROA_0_0]], 0
43+
; CHECK-NEXT: [[TMP1:%.*]] = insertvalue { i1, i8 } [[TMP0]], i8 [[_0_SROA_11_0]], 1
44+
; CHECK-NEXT: ret { i1, i8 } [[TMP1]]
45+
;
46+
start:
47+
switch i8 %character, label %bb11 [
48+
i8 48, label %bb2
49+
i8 49, label %bb3
50+
i8 50, label %bb4
51+
i8 51, label %bb5
52+
i8 52, label %bb6
53+
i8 53, label %bb7
54+
i8 54, label %bb8
55+
i8 55, label %bb9
56+
i8 56, label %bb10
57+
]
58+
59+
bb2:
60+
br label %bb11
61+
62+
bb3:
63+
br label %bb11
64+
65+
bb4:
66+
br label %bb11
67+
68+
bb5:
69+
br label %bb11
70+
71+
bb6:
72+
br label %bb11
73+
74+
bb7:
75+
br label %bb11
76+
77+
bb8:
78+
br label %bb11
79+
80+
bb9:
81+
br label %bb11
82+
83+
bb10:
84+
br label %bb11
85+
86+
bb11:
87+
%_0.sroa.11.0 = phi i8 [ 8, %bb10 ], [ 7, %bb9 ], [ 6, %bb8 ], [ 5, %bb7 ], [ 4, %bb6 ], [ 3, %bb5 ], [ 2, %bb4 ], [ 1, %bb3 ], [ 0, %bb2 ], [ undef, %start ]
88+
%_0.sroa.0.0 = phi i1 [ true, %bb10 ], [ true, %bb9 ], [ true, %bb8 ], [ true, %bb7 ], [ true, %bb6 ], [ true, %bb5 ], [ true, %bb4 ], [ true, %bb3 ], [ true, %bb2 ], [ false, %start ]
89+
%0 = insertvalue { i1, i8 } poison, i1 %_0.sroa.0.0, 0
90+
%1 = insertvalue { i1, i8 } %0, i8 %_0.sroa.11.0, 1
91+
ret { i1, i8 } %1
92+
}

0 commit comments

Comments
 (0)