Files
swift-mirror/test/SILOptimizer/simplify_tuple_extract.sil
Erik Eckstein 88973a3cd5 Swift Optimizer: add simplification for tuple_extract
Replace tuple_extract(tuple(x)) -> x
2023-05-08 21:23:36 +02:00

40 lines
1.4 KiB
Plaintext

// RUN: %target-sil-opt -enable-sil-verify-all %s -onone-simplification -simplify-instruction=tuple_extract | %FileCheck %s
// REQUIRES: swift_in_compiler
import Swift
import Builtin
// CHECK-LABEL: sil @tuple_extract_first_field
// CHECK: return %0
// CHECK: } // end sil function 'tuple_extract_first_field'
sil @tuple_extract_first_field : $@convention(thin) (@owned String, @guaranteed String) -> @owned String {
bb0(%0 : $String, %1 : $String):
%2 = tuple (%0 : $String, %1 : $String)
%3 = tuple_extract %2 : $(String, String), 0
return %3 : $String
}
// CHECK-LABEL: sil @tuple_extract_second_field
// CHECK: return %1
// CHECK: } // end sil function 'tuple_extract_second_field'
sil @tuple_extract_second_field : $@convention(thin) (@guaranteed String, @owned String) -> @owned String {
bb0(%0 : $String, %1 : $String):
%2 = tuple (%0 : $String, %1 : $String)
%3 = tuple_extract %2 : $(String, String), 1
return %3 : $String
}
// CHECK-LABEL: sil [ossa] @tuple_extract_ossa
// CHECK: %2 = copy_value %0
// CHECK: return %2
// CHECK: } // end sil function 'tuple_extract_ossa'
sil [ossa] @tuple_extract_ossa : $@convention(thin) (@guaranteed String, @guaranteed String) -> @owned String {
bb0(%0 : @guaranteed $String, %1 : @guaranteed $String):
%2 = tuple (%0 : $String, %1 : $String)
%3 = tuple_extract %2 : $(String, String), 0
%4 = copy_value %3 : $String
return %4 : $String
}