Skip to content

Commit faabae0

Browse files
committed
[SimplifyCFG] Add tests for big lookup tables which exceed the mask size and lookup tables with reachable/unreachable default cases
1 parent cac7821 commit faabae0

File tree

2 files changed

+633
-0
lines changed

2 files changed

+633
-0
lines changed

llvm/test/Transforms/SimplifyCFG/X86/switch_to_lookup_table.ll

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1778,6 +1778,57 @@ bb6: ; preds = %start, %bb3, %bb4,
17781778
ret i32 %.sroa.0.0
17791779
}
17801780

1781+
; This is the same as @signed_overflow2 except that the default case calls @exit(), so it
1782+
; isn't treated as unreachable
1783+
define i32 @signed_overflow3(i8 %n) {
1784+
; CHECK-LABEL: @signed_overflow3(
1785+
; CHECK-NEXT: start:
1786+
; CHECK-NEXT: [[TRUNC:%.*]] = trunc i8 [[N:%.*]] to i2
1787+
; CHECK-NEXT: switch i2 [[TRUNC]], label [[START_UNREACHABLEDEFAULT:%.*]] [
1788+
; CHECK-NEXT: i2 1, label [[BB6:%.*]]
1789+
; CHECK-NEXT: i2 -2, label [[BB4:%.*]]
1790+
; CHECK-NEXT: i2 -1, label [[BB5:%.*]]
1791+
; CHECK-NEXT: i2 0, label [[BB1:%.*]]
1792+
; CHECK-NEXT: ]
1793+
; CHECK: start.unreachabledefault:
1794+
; CHECK-NEXT: unreachable
1795+
; CHECK: bb1:
1796+
; CHECK-NEXT: call void @exit(i32 1)
1797+
; CHECK-NEXT: unreachable
1798+
; CHECK: bb4:
1799+
; CHECK-NEXT: br label [[BB6]]
1800+
; CHECK: bb5:
1801+
; CHECK-NEXT: br label [[BB6]]
1802+
; CHECK: bb6:
1803+
; CHECK-NEXT: [[DOTSROA_0_0:%.*]] = phi i32 [ 4444, [[BB5]] ], [ 3333, [[BB4]] ], [ 2222, [[START:%.*]] ]
1804+
; CHECK-NEXT: ret i32 [[DOTSROA_0_0]]
1805+
;
1806+
start:
1807+
%trunc = trunc i8 %n to i2
1808+
switch i2 %trunc, label %bb1 [
1809+
i2 1, label %bb3
1810+
i2 -2, label %bb4
1811+
i2 -1, label %bb5
1812+
]
1813+
1814+
bb1: ; preds = %start
1815+
call void @exit(i32 1)
1816+
unreachable
1817+
1818+
bb3: ; preds = %start
1819+
br label %bb6
1820+
1821+
bb4: ; preds = %start
1822+
br label %bb6
1823+
1824+
bb5: ; preds = %start
1825+
br label %bb6
1826+
1827+
bb6: ; preds = %start, %bb3, %bb4, %bb5
1828+
%.sroa.0.0 = phi i32 [ 4444, %bb5 ], [ 3333, %bb4 ], [ 2222, %bb3 ]
1829+
ret i32 %.sroa.0.0
1830+
}
1831+
17811832
define i32 @signed_overflow_negative(i8 %n) {
17821833
; CHECK-LABEL: @signed_overflow_negative(
17831834
; CHECK-NEXT: start:

0 commit comments

Comments
 (0)