Files
swift-mirror/test/SILOptimizer/simplify_struct_extract.sil

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
}