forked from swiftlang/swift
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathconditionally_unreachable.swift
37 lines (31 loc) · 1.5 KB
/
conditionally_unreachable.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// RUN: %target-swift-frontend -emit-silgen -parse-stdlib -primary-file %s | FileCheck %s -check-prefix=RAW
// RUN: %target-swift-frontend -emit-sil -assert-config Debug -parse-stdlib -primary-file %s | FileCheck -check-prefix=DEBUG %s
// RUN: %target-swift-frontend -emit-sil -O -assert-config Debug -parse-stdlib -primary-file %s | FileCheck -check-prefix=DEBUG %s
// RUN: %target-swift-frontend -emit-sil -assert-config Release -parse-stdlib -primary-file %s | FileCheck -check-prefix=RELEASE %s
// RUN: %target-swift-frontend -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 @_TF25conditionally_unreachable15condUnreachableFT_T_
// 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 @_TF25conditionally_unreachable15condUnreachableFT_T_
// DEBUG-NOT: cond_br
// DEBUG: function_ref @foo
// DEBUG-NOT: unreachable
// DEBUG: return
// RELEASE-LABEL: sil hidden @_TF25conditionally_unreachable15condUnreachableFT_T_
// RELEASE-NOT: cond_br
// RELEASE-NOT: function_ref @foo
// RELEASE-NOT: return
// RELEASE-NOT: builtin
// RELEASE: unreachable