// RUN: %target-swift-frontend -emit-sil -enable-sil-ownership %s -Onone -Xllvm \
// RUN:   -sil-print-after=allocbox-to-stack -Xllvm \
// RUN:   -sil-print-only-functions=$S3red19ThrowAddrOnlyStructV016throwsOptionalToG0ACyxGSgSi_tcfC \
// RUN:   -Xllvm -sil-print-debuginfo -o /dev/null 2>&1 | %FileCheck %s

// CHECK: bb5(%27 : @owned $Error):
// CHECK:   dealloc_stack %6 : $*ThrowAddrOnlyStruct<T>, loc {{.*}}:27:68, scope 2
// CHECK:   dealloc_stack %3 : $*ThrowAddrOnlyStruct<T>, loc {{.*}}:27:68, scope 2
// CHECK:   br bb4(%27 : $Error), loc {{.*}}:27:15, scope 2

protocol Patatino {
  init()
}
struct ThrowAddrOnlyStruct<T : Patatino> {
  var x : T
  init(fail: ()) throws { x = T() }
  init(failDuringDelegation: Int) throws {
    try self.init(fail: ())
  }
  init?(throwsToOptional: Int) {
    try? self.init(failDuringDelegation: throwsToOptional)
  }
  init(throwsOptionalToThrows: Int) throws {
    self.init(throwsToOptional: throwsOptionalToThrows)!
  }
  init?(throwsOptionalToOptional: Int) {
    try! self.init(throwsOptionalToThrows: throwsOptionalToOptional)
  }
}
