// 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 }