// RUN: %target-sil-opt -enable-sil-verify-all %s -definite-init -raw-sil-inst-lowering

import Builtin
import Swift
import SwiftShims

struct S<T> {
  var x: (T, T)
}

sil [ossa] @$s19definite_init_tuple1SV1xx_xtvpfi : $@convention(thin) <T> () -> (@out T, @out T)

sil [ossa] @$s19definite_init_tuple1SVACyxGycfC : $@convention(method) <T> (@thin S<T>.Type) -> @out S<T> {
bb0(%0 : $*S<T>, %1 : $@thin S<T>.Type):
  %2 = alloc_box $<τ_0_0> { var S<τ_0_0> } <T>, var, name "self"
  %3 = mark_uninitialized [rootself] %2 : $<τ_0_0> { var S<τ_0_0> } <T>
  %4 = project_box %3 : $<τ_0_0> { var S<τ_0_0> } <T>, 0
  %5 = struct_element_addr %4 : $*S<T>, #S.x
  %6 = function_ref @$s19definite_init_tuple1SV1xx_xtvpfi : $@convention(thin) <τ_0_0> () -> (@out τ_0_0, @out τ_0_0)
  %7 = tuple_element_addr %5 : $*(T, T), 0
  %8 = tuple_element_addr %5 : $*(T, T), 1
  %9 = apply %6<T>(%7, %8) : $@convention(thin) <τ_0_0> () -> (@out τ_0_0, @out τ_0_0)
  copy_addr %4 to [initialization] %0 : $*S<T>
  destroy_value %3 : $<τ_0_0> { var S<τ_0_0> } <T>
  %12 = tuple ()
  return %12 : $()
}