// RUN: %target-sil-func-extractor -assume-parsing-unqualified-ownership-sil %s -func=use_before_init | %FileCheck %s
// RUN: rm -rf %t
// RUN: mkdir %t
// RUN: %target-sil-func-extractor -assume-parsing-unqualified-ownership-sil %s -func=use_before_init -emit-sib -o %t/out.sib -module-name main && %target-sil-opt %t/out.sib -module-name main | %FileCheck %s

import Builtin
import Swift

// For now we do not remove dead functions so update this when that functionality is added.

// CHECK-NOT: sil @takes_Int_inout : $@convention(thin) (@inout Int64) -> ()
sil @takes_Int_inout : $@convention(thin) (@inout Int64) -> ()

// CHECK-NOT: sil @makesInt : $@convention(thin) () -> Int64
sil @makesInt : $@convention(thin) () -> Int64

// CHECK-LABEL: sil @use_before_init : $@convention(thin) () -> Int64 {
// CHECK: bb0:
// CHECK: return
// CHECK: }
sil @use_before_init : $@convention(thin) () -> Int64 {
bb0:
  %1 = alloc_box $<τ_0_0> { var τ_0_0 } <Int64>
  %1a = project_box %1 : $<τ_0_0> { var τ_0_0 } <Int64>, 0
  %2 = load %1a : $*Int64
  %3 = function_ref @inout_uninit : $@convention(thin)() -> ()
  apply %3() : $@convention(thin) () -> ()
  strong_release %1 : $<τ_0_0> { var τ_0_0 } <Int64>
  %4 = return %2 : $Int64
}

// CHECK-NOT: sil @inout_uninit : $@convention(thin) () -> () {
sil @inout_uninit : $@convention(thin) () -> () {
bb0:
  %1 = alloc_box $<τ_0_0> { var τ_0_0 } <Int64>
  %1a = project_box %1 : $<τ_0_0> { var τ_0_0 } <Int64>, 0
  %5 = function_ref @takes_Int_inout : $@convention(thin) (@inout Int64) -> ()
  %6 = apply %5(%1a) : $@convention(thin) (@inout Int64) -> ()

  %0 = tuple ()
  strong_release %1 : $<τ_0_0> { var τ_0_0 } <Int64>
  return %0 : $()
}
