Changeset View
Changeset View
Standalone View
Standalone View
llvm/test/Transforms/SCCP/switch-constantfold-crash.ll
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py | ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py | ||||
; RUN: opt -ipsccp < %s -S | FileCheck %s | ; RUN: opt -ipsccp < %s -S | FileCheck %s | ||||
; RUN: opt -passes=ipsccp < %s -S | FileCheck %s | ; RUN: opt -passes=ipsccp < %s -S | FileCheck %s | ||||
define void @barney() { | define void @barney() { | ||||
; CHECK-LABEL: @barney( | ; CHECK-LABEL: @barney( | ||||
; CHECK-NEXT: bb: | ; CHECK-NEXT: bb: | ||||
; CHECK-NEXT: br label %bb9 | ; CHECK-NEXT: br label [[BB9:%.*]] | ||||
fhahn: These checks seem odd. We care basically just creating a FileCheck variable, but never match… | |||||
Yes, this is a weakness of update_test_checks generated check lines. Do you want me to manually undo these? nikic: Yes, this is a weakness of update_test_checks generated check lines. Do you want me to manually… | |||||
; CHECK: bb6: | ; CHECK: bb6: | ||||
; CHECK-NEXT: unreachable | ; CHECK-NEXT: unreachable | ||||
; CHECK: bb9: | ; CHECK: bb9: | ||||
; CHECK-NEXT: unreachable | ; CHECK-NEXT: br label [[BB6:%.*]] | ||||
; | ; | ||||
bb: | bb: | ||||
br label %bb9 | br label %bb9 | ||||
bb6: ; preds = %bb9 | bb6: ; preds = %bb9 | ||||
unreachable | unreachable | ||||
bb7: ; preds = %bb9 | bb7: ; preds = %bb9 | ||||
unreachable | unreachable | ||||
bb9: ; preds = %bb | bb9: ; preds = %bb | ||||
switch i16 0, label %bb6 [ | switch i16 0, label %bb6 [ | ||||
i16 61, label %bb7 | i16 61, label %bb7 | ||||
] | ] | ||||
} | } | ||||
define void @blam() { | define void @blam() { | ||||
; CHECK-LABEL: @blam( | ; CHECK-LABEL: @blam( | ||||
; CHECK-NEXT: bb: | ; CHECK-NEXT: bb: | ||||
; CHECK-NEXT: br label %bb16 | ; CHECK-NEXT: br label [[BB16:%.*]] | ||||
; CHECK: bb16: | ; CHECK: bb16: | ||||
; CHECK-NEXT: br label %bb38 | ; CHECK-NEXT: br label [[BB38:%.*]] | ||||
; CHECK: bb38: | ; CHECK: bb38: | ||||
; CHECK-NEXT: unreachable | ; CHECK-NEXT: unreachable | ||||
; | ; | ||||
bb: | bb: | ||||
br label %bb16 | br label %bb16 | ||||
bb16: ; preds = %bb | bb16: ; preds = %bb | ||||
switch i32 0, label %bb38 [ | switch i32 0, label %bb38 [ | ||||
Show All 14 Lines | |||||
bb38: ; preds = %bb16 | bb38: ; preds = %bb16 | ||||
unreachable | unreachable | ||||
} | } | ||||
define void @hoge() { | define void @hoge() { | ||||
; CHECK-LABEL: @hoge( | ; CHECK-LABEL: @hoge( | ||||
; CHECK-NEXT: bb: | ; CHECK-NEXT: bb: | ||||
; CHECK-NEXT: br label %bb2 | ; CHECK-NEXT: br label [[BB2:%.*]] | ||||
; CHECK: bb2: | ; CHECK: bb2: | ||||
; CHECK-NEXT: unreachable | ; CHECK-NEXT: br label [[BB3:%.*]] | ||||
; CHECK: bb3: | ; CHECK: bb3: | ||||
; CHECK-NEXT: unreachable | ; CHECK-NEXT: unreachable | ||||
; | ; | ||||
bb: | bb: | ||||
switch i16 undef, label %bb1 [ | switch i16 undef, label %bb1 [ | ||||
i16 135, label %bb2 | i16 135, label %bb2 | ||||
i16 66, label %bb2 | i16 66, label %bb2 | ||||
] | ] | ||||
Show All 17 Lines |
These checks seem odd. We care basically just creating a FileCheck variable, but never match the variable elsewhere, right? So we aren't actually checking if we branch to bb9 here, unless I am missing something.