blob: c738f66d5b22570c39c97980300c74a2f44c3765 [file] [log] [blame]
// RUN: %target-swift-emit-silgen -parse-stdlib -primary-file %s | %FileCheck %s -check-prefix=RAW
// RUN: %target-swift-emit-sil -assert-config Debug -parse-stdlib -primary-file %s | %FileCheck -check-prefix=DEBUG %s
// RUN: %target-swift-emit-sil -O -assert-config Debug -parse-stdlib -primary-file %s | %FileCheck -check-prefix=DEBUG %s
// RUN: %target-swift-emit-sil -assert-config Release -parse-stdlib -primary-file %s | %FileCheck -check-prefix=RELEASE %s
// RUN: %target-swift-emit-sil -O -assert-config Release -parse-stdlib -primary-file %s | %FileCheck -check-prefix=RELEASE %s
import Swift
@_silgen_name("foo") func foo()
func condUnreachable() {
if Int32(Builtin.assert_configuration()) == 0 {
foo()
} else {
Builtin.conditionallyUnreachable()
}
}
// RAW-LABEL: sil hidden [ossa] @$s25conditionally_unreachable15condUnreachableyyF
// RAW: cond_br {{%.*}}, [[YEA:bb[0-9]+]], [[NAY:bb[0-9]+]]
// RAW: [[YEA]]:
// RAW: function_ref @foo
// RAW: [[NAY]]:
// RAW: builtin "conditionallyUnreachable"
// DEBUG-LABEL: sil hidden @$s25conditionally_unreachable15condUnreachableyyF
// DEBUG-NOT: cond_br
// DEBUG: function_ref @foo
// DEBUG-NOT: {{ unreachable}}
// DEBUG: return
// RELEASE-LABEL: sil hidden @$s25conditionally_unreachable15condUnreachableyyF
// RELEASE-NOT: cond_br
// RELEASE-NOT: function_ref @foo
// RELEASE-NOT: return
// RELEASE-NOT: builtin
// RELEASE: {{ unreachable}}