llvm-project/llvm/test/Transforms/SCCP/switch-constantfold-crash.ll

93 lines
2.1 KiB
LLVM

; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt -ipsccp < %s -S | FileCheck %s
; RUN: opt -passes=ipsccp < %s -S | FileCheck %s
define void @barney() {
; CHECK-LABEL: @barney(
; CHECK-NEXT: bb:
; CHECK-NEXT: br label [[BB9:%.*]]
; CHECK: bb6:
; CHECK-NEXT: unreachable
; CHECK: bb9:
; CHECK-NEXT: br label [[BB6:%.*]]
;
bb:
br label %bb9
bb6: ; preds = %bb9
unreachable
bb7: ; preds = %bb9
unreachable
bb9: ; preds = %bb
switch i16 0, label %bb6 [
i16 61, label %bb7
]
}
define void @blam() {
; CHECK-LABEL: @blam(
; CHECK-NEXT: bb:
; CHECK-NEXT: br label [[BB16:%.*]]
; CHECK: bb16:
; CHECK-NEXT: br label [[BB38:%.*]]
; CHECK: bb38:
; CHECK-NEXT: unreachable
;
bb:
br label %bb16
bb16: ; preds = %bb
switch i32 0, label %bb38 [
i32 66, label %bb17
i32 63, label %bb18
i32 86, label %bb19
]
bb17: ; preds = %bb16
unreachable
bb18: ; preds = %bb16
unreachable
bb19: ; preds = %bb16
unreachable
bb38: ; preds = %bb16
unreachable
}
define void @hoge() {
; CHECK-LABEL: @hoge(
; CHECK-NEXT: bb:
; CHECK-NEXT: br label [[BB2:%.*]]
; CHECK: bb2:
; CHECK-NEXT: br label [[BB3:%.*]]
; CHECK: bb3:
; CHECK-NEXT: unreachable
;
bb:
switch i16 undef, label %bb1 [
i16 135, label %bb2
i16 66, label %bb2
]
bb1: ; preds = %bb
ret void
bb2: ; preds = %bb, %bb
switch i16 0, label %bb3 [
i16 61, label %bb4
i16 54, label %bb4
i16 49, label %bb4
]
bb3: ; preds = %bb2
unreachable
bb4: ; preds = %bb2, %bb2, %bb2
unreachable
}