mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
45 lines
1.5 KiB
Plaintext
45 lines
1.5 KiB
Plaintext
// RUN: %target-sil-opt -enable-sil-verify-all %s -onone-simplification -simplify-instruction=struct_extract | %FileCheck %s
|
|
|
|
// REQUIRES: swift_in_compiler
|
|
|
|
import Swift
|
|
import Builtin
|
|
|
|
struct S {
|
|
var a: String
|
|
var b: String
|
|
}
|
|
|
|
// CHECK-LABEL: sil @struct_extract_first_field
|
|
// CHECK: return %0
|
|
// CHECK: } // end sil function 'struct_extract_first_field'
|
|
sil @struct_extract_first_field : $@convention(thin) (@owned String, @guaranteed String) -> @owned String {
|
|
bb0(%0 : $String, %1 : $String):
|
|
%2 = struct $S (%0 : $String, %1 : $String)
|
|
%3 = struct_extract %2 : $S, #S.a
|
|
return %3 : $String
|
|
}
|
|
|
|
// CHECK-LABEL: sil @struct_extract_second_field
|
|
// CHECK: return %1
|
|
// CHECK: } // end sil function 'struct_extract_second_field'
|
|
sil @struct_extract_second_field : $@convention(thin) (@guaranteed String, @owned String) -> @owned String {
|
|
bb0(%0 : $String, %1 : $String):
|
|
%2 = struct $S (%0 : $String, %1 : $String)
|
|
%3 = struct_extract %2 : $S, #S.b
|
|
return %3 : $String
|
|
}
|
|
|
|
// CHECK-LABEL: sil [ossa] @struct_extract_ossa
|
|
// CHECK: %2 = copy_value %0
|
|
// CHECK: return %2
|
|
// CHECK: } // end sil function 'struct_extract_ossa'
|
|
sil [ossa] @struct_extract_ossa : $@convention(thin) (@guaranteed String, @guaranteed String) -> @owned String {
|
|
bb0(%0 : @guaranteed $String, %1 : @guaranteed $String):
|
|
%2 = struct $S (%0 : $String, %1 : $String)
|
|
%3 = struct_extract %2 : $S, #S.a
|
|
%4 = copy_value %3 : $String
|
|
return %4 : $String
|
|
}
|
|
|