@@ -18,8 +18,8 @@ public class MyGizmo {
18
18
// CHECK: [[A_FUN:%.*]] = function_ref @$sSo5GizmoC14stringPropertySSSgvgToTeab_
19
19
// CHECK: apply [[A_FUN]]({{.*}}) : $@convention(thin) (@in_guaranteed Gizmo) -> @owned Optional<String>
20
20
// CHECK-NOT: return
21
- // CHECK: [[P_FUN:%.*]] = function_ref @$sSo5GizmoC14stringPropertySSSgvgToTepb_
22
- // CHECK: apply [[P_FUN]]({{.*}}) : $@convention(thin) (Gizmo) -> @owned Optional<String>
21
+ // CHECK: [[P_FUN:%.*]] = function_ref @$sSo5GizmoC14stringPropertySSSgvgToTeob_
22
+ // CHECK: apply [[P_FUN]]({{.*}}) : $@convention(thin) (@owned Gizmo) -> @owned Optional<String>
23
23
// CHECK: return
24
24
// CHECK: } // end sil function '$s8outliner7MyGizmoC11usePropertyyyF'
25
25
public func useProperty( ) {
@@ -66,26 +66,35 @@ public func testOutlining() {
66
66
// CHECK: switch_enum [[RES]]
67
67
// CHECK: } // end sil function '$s8outliner9dontCrash1ayyp_tF'
68
68
69
- // CHECK-LABEL: sil shared [noinline] @$sSo5GizmoC14stringPropertySSSgvgToTeab_ : $@convention(thin) (@in_guaranteed Gizmo) -> @owned Optional<String>
70
- // CHECK: bb0(%0 : $*Gizmo):
71
- // CHECK: %1 = load %0 : $*Gizmo
72
- // CHECK: %2 = objc_method %1 : $Gizmo, #Gizmo.stringProperty!getter.foreign : (Gizmo) -> () -> String?
73
- // CHECK: %3 = apply %2(%1) : $@convention(objc_method) (Gizmo) -> @autoreleased Optional<NSString>
74
- // CHECK: switch_enum %3 : $Optional<NSString>, case #Optional.some!enumelt: bb1, case #Optional.none!enumelt: bb2
75
- // CHECK: bb1(%5 : $NSString):
76
- // CHECK: %6 = function_ref @$sSS10FoundationE36_unconditionallyBridgeFromObjectiveCySSSo8NSStringCSgFZ : $@convention(method) (@guaranteed Optional<NSString>, @thin String.Type) -> @owned String
77
- // CHECK: %7 = metatype $@thin String.Type
78
- // CHECK: %8 = apply %6(%3, %7) : $@convention(method) (@guaranteed Optional<NSString>, @thin String.Type) -> @owned String
79
- // CHECK: release_value %3 : $Optional<NSString>
80
- // CHECK: %10 = enum $Optional<String>, #Optional.some!enumelt, %8 : $String
81
- // CHECK: br bb3(%10 : $Optional<String>)
82
- // CHECK: bb2:
83
- // CHECK: %12 = enum $Optional<String>, #Optional.none!enumelt
84
- // CHECK: br bb3(%12 : $Optional<String>)
85
- // CHECK: bb3(%14 : $Optional<String>):
86
- // CHECK: return %14 : $Optional<String>
69
+ // CHECK-LABEL: sil shared [noinline] @$sSo5GizmoC14stringPropertySSSgvgToTeab_ : {{.*}} {
70
+ // CHECK: {{bb[0-9]+}}([[ADDR:%[^,]+]] : $*Gizmo):
71
+ // CHECK: [[INSTANCE:%[^,]+]] = load [[ADDR]]
72
+ // CHECK: [[CONSUMING_OUTLINED_BRIDGED_PROPERTY:%[^,]+]] = function_ref @$sSo5GizmoC14stringPropertySSSgvgToTeob_
73
+ // CHECK: strong_retain [[INSTANCE]]
74
+ // CHECK: [[RETVAL:%[^,]+]] = apply [[CONSUMING_OUTLINED_BRIDGED_PROPERTY]]([[INSTANCE]])
75
+ // CHECK: return [[RETVAL]]
87
76
// CHECK: } // end sil function '$sSo5GizmoC14stringPropertySSSgvgToTeab_'
88
77
78
+ // CHECK-LABEL: sil shared [noinline] @$sSo5GizmoC14stringPropertySSSgvgToTeob_ : {{.*}} {
79
+ // CHECK: {{bb[0-9]+}}([[INSTANCE:%[^,]+]] :
80
+ // CHECK: [[GIZME_STRINGPROPERTY_GETTER:%[^,]+]] = objc_method [[INSTANCE]] : $Gizmo, #Gizmo.stringProperty!getter.foreign
81
+ // CHECK: [[MAYBE_NSSTRING:%[^,]+]] = apply [[GIZME_STRINGPROPERTY_GETTER]]([[INSTANCE]])
82
+ // CHECK: strong_release [[INSTANCE]]
83
+ // CHECK: switch_enum [[MAYBE_NSSTRING]] : $Optional<NSString>, case #Optional.some!enumelt: [[SOME_BLOCK:bb[0-9]+]], case #Optional.none!enumelt: [[NONE_BLOCK:bb[0-9]+]]
84
+ // CHECK: [[SOME_BLOCK]]([[REGISTER_5:%[^,]+]] : $NSString):
85
+ // CHECK: [[STRING_FROM_NSSTRING:%[^,]+]] = function_ref @$sSS10FoundationE36_unconditionallyBridgeFromObjectiveCySSSo8NSStringCSgFZ
86
+ // CHECK: [[STRING_TYPE:%[^,]+]] = metatype $@thin String.Type
87
+ // CHECK: [[STRING:%[^,]+]] = apply [[STRING_FROM_NSSTRING]]([[MAYBE_NSSTRING]], [[STRING_TYPE]])
88
+ // CHECK: release_value [[MAYBE_NSSTRING]]
89
+ // CHECK: [[SOME_STRING:%[^,]+]] = enum $Optional<String>, #Optional.some!enumelt, [[STRING]]
90
+ // CHECK: br [[EXIT:bb[0-9]+]]([[SOME_STRING]] : $Optional<String>)
91
+ // CHECK: [[NONE_BLOCK]]:
92
+ // CHECK: [[NONE_STRING:%[^,]+]] = enum $Optional<String>, #Optional.none!enumelt
93
+ // CHECK: br [[EXIT]]([[NONE_STRING]] : $Optional<String>)
94
+ // CHECK: [[EXIT]]([[MAYBE_STRING:%[^,]+]] :
95
+ // CHECK: return [[MAYBE_STRING]]
96
+ // CHECK-LABEL: } // end sil function '$sSo5GizmoC14stringPropertySSSgvgToTeob_'
97
+
89
98
// CHECK-LABEL: sil shared [noinline] @$sSo5GizmoC14stringPropertySSSgvgToTepb_ : $@convention(thin) (Gizmo) -> @owned Optional<String>
90
99
// CHECK: bb0(%0 : $Gizmo):
91
100
// CHECK: %1 = objc_method %0 : $Gizmo, #Gizmo.stringProperty!getter.foreign : (Gizmo) -> () -> String?
0 commit comments