// RUN: %target-swift-frontend -Xllvm -sil-full-demangle %s -emit-ir -g -o - | FileCheck %s
// RUN: %target-swift-frontend -Xllvm -sil-full-demangle %s -emit-sil -emit-verbose-sil -g -o - | FileCheck -check-prefix=CHECK-SIL %s
import StdlibUnittest

class Obj {}

func foo (_ a : Int64) throws -> Void {
  _blackHole(a)
}

// CHECK-SIL: // main.testDoStmt () throws -> ()
func testDoStmt() throws -> Void {
  _blackHole(23)

  // CHECK-NOT: !DILocation(line: [[@LINE+1]]
  do {
    let obj = Obj()
    _blackHole(obj)
    try foo(100)
    // CHECK-SIL: bb{{.*}}(%{{[0-9]+}} : $()):
    // CHECK-SIL-NEXT: strong_release {{.*}}: $Obj{{.*}} line:[[@LINE+1]]:3:cleanup
  }
  // CHECK-SIL-NEXT:     = tuple ()
  // CHECK-SIL-NEXT:   return                        {{.*}} line:[[@LINE+1]]
}

try testDoStmt()

// CHECK-SIL: // main.testDoWhileStmt () -> ()
func testDoWhileStmt() -> Void {
  // CHECK-NOT: !DILocation(line: [[@LINE+1]]
  do {
    try foo(100)
    // CHECK-SIL: bb{{.*}}(%{{[0-9]+}} : $()):
    // CHECK-SIL-NEXT:  br [[RETURN_BB:bb[0-9]+]]{{.*}} line:[[@LINE+1]]:3:cleanup
  }
  // CHECK-SIL: [[RETURN_BB]]:
  // CHECK-SIL-NEXT:     = tuple ()
  // CHECK-SIL-NEXT:   return

  catch (let e) {
    _blackHole(e)
  }
}
