// RUN: %target-sil-opt -assume-parsing-unqualified-ownership-sil -enable-sil-verify-all %s -caller-analysis-printer -o /dev/null | %FileCheck --check-prefix=CHECK %s

// CHECK: Function dead_func has caller: false, partial applied args = 0
// CHECK: Function call_top has caller: false, partial applied args = 0
// CHECK: Function call_middle has caller: true, partial applied args = 0
// CHECK: Function call_bottom has caller: true, partial applied args = 0
// CHECK: Function self_recursive_func has caller: true, partial applied args = 0
// CHECK: Function mutual_recursive_func1 has caller: true, partial applied args = 0
// CHECK: Function mutual_recursive_func2 has caller: true, partial applied args = 0
// CHECK: Function multi_called has caller: true, partial applied args = 0
// CHECK: Function multi_calles has caller: false, partial applied args = 0
// CHECK: Function multi_callers has caller: true, partial applied args = 0
// CHECK: Function multi_caller1 has caller: false, partial applied args = 0
// CHECK: Function multi_caller2 has caller: false, partial applied args = 0
// CHECK: Function closure1 has caller: false, partial applied args = 1
// CHECK: Function closure2 has caller: false, partial applied args = 2
// CHECK: Function partial_apply_one_arg has caller: false, partial applied args = 0
// CHECK: Function partial_apply_two_args1 has caller: false, partial applied args = 0
// CHECK: Function partial_apply_two_args2 has caller: false, partial applied args = 0

sil_stage canonical

import Builtin

sil hidden @dead_func : $@convention(thin) () -> () {
  %2 = tuple ()
  return %2 : $()
}

sil hidden @call_top : $@convention(thin) () -> () {
bb0:
  %0 = function_ref @call_middle : $@convention(thin) () -> ()
  %1 = apply %0() : $@convention(thin) () -> ()
  %2 = tuple ()
  return %2 : $()
}

sil hidden @call_middle : $@convention(thin) () -> () {
bb0:
  %0 = function_ref @call_bottom : $@convention(thin) () -> ()
  %1 = apply %0() : $@convention(thin) () -> ()
  %2 = tuple ()
  return %2 : $()
}

sil hidden  @call_bottom : $@convention(thin) () -> () {
bb0:
  %0 = tuple ()
  return %0 : $()
}

sil hidden @self_recursive_func : $@convention(thin) () -> () {
bb0:
  %0 = function_ref @self_recursive_func : $@convention(thin) () -> ()
  %1 = apply %0() : $@convention(thin) () -> ()
  %2 = tuple ()
  return %2 : $()
}

sil hidden @mutual_recursive_func1 : $@convention(thin) () -> () {
bb0:
  %0 = function_ref @mutual_recursive_func2 : $@convention(thin) () -> ()
  %1 = apply %0() : $@convention(thin) () -> ()
  %2 = tuple ()
  return %2 : $()
}

sil hidden @mutual_recursive_func2 : $@convention(thin) () -> () {
bb0:
  %0 = function_ref @mutual_recursive_func1 : $@convention(thin) () -> ()
  %1 = apply %0() : $@convention(thin) () -> ()
  %2 = tuple ()
  return %2 : $()
}

sil hidden @multi_called : $@convention(thin) () -> () {
bb0:
  %2 = tuple ()
  return %2 : $()
}

sil hidden @multi_calles : $@convention(thin) () -> () {
bb0:
  %0 = function_ref @multi_called : $@convention(thin) () -> ()
  %1 = apply %0() : $@convention(thin) () -> ()
  cond_br undef, bb1, bb2
bb1:
  %2 = apply %0() : $@convention(thin) () -> ()
  br bb3
bb2:
  %3 = apply %0() : $@convention(thin) () -> ()
  br bb3
bb3:
  %4 = tuple ()
  return %4 : $()
}

sil hidden @multi_callers : $@convention(thin) () -> () {
bb0:
  %2 = tuple ()
  return %2 : $()
}

sil hidden @multi_caller1 : $@convention(thin) () -> () {
bb0:
  %0 = function_ref @multi_callers : $@convention(thin) () -> ()
  %1 = apply %0() : $@convention(thin) () -> ()
  %2 = tuple ()
  return %2 : $()
}

sil hidden @multi_caller2 : $@convention(thin) () -> () {
bb0:
  %0 = function_ref @multi_callers : $@convention(thin) () -> ()
  %1 = apply %0() : $@convention(thin) () -> ()
  %2 = tuple ()
  return %2 : $()
}

sil @closure1 : $@convention(thin) (Builtin.Int32, Builtin.Int32) -> Builtin.Int32 {
bb0(%0 : $Builtin.Int32, %1 : $Builtin.Int32):
  return %0 : $Builtin.Int32
}

sil @closure2 : $@convention(thin) (Builtin.Int32, Builtin.Int32) -> Builtin.Int32 {
bb0(%0 : $Builtin.Int32, %1 : $Builtin.Int32):
  return %0 : $Builtin.Int32
}

sil @partial_apply_one_arg : $@convention(thin) (Builtin.Int32) -> @owned @callee_owned (Builtin.Int32) -> Builtin.Int32 {
bb0(%0 : $Builtin.Int32):
  %1 = function_ref @closure1 : $@convention(thin) (Builtin.Int32, Builtin.Int32) -> Builtin.Int32
  %2 = partial_apply %1(%0) : $@convention(thin) (Builtin.Int32, Builtin.Int32) -> Builtin.Int32
  return %2 : $@callee_owned (Builtin.Int32) -> Builtin.Int32
}

sil @partial_apply_two_args1 : $@convention(thin) (Builtin.Int32) -> @owned @callee_owned () -> Builtin.Int32 {
bb0(%0 : $Builtin.Int32):
  %1 = function_ref @closure1 : $@convention(thin) (Builtin.Int32, Builtin.Int32) -> Builtin.Int32
  %2 = partial_apply %1(%0, %0) : $@convention(thin) (Builtin.Int32, Builtin.Int32) -> Builtin.Int32
  return %2 : $@callee_owned () -> Builtin.Int32
}

sil @partial_apply_two_args2 : $@convention(thin) (Builtin.Int32) -> @owned @callee_owned () -> Builtin.Int32 {
bb0(%0 : $Builtin.Int32):
  %1 = function_ref @closure2 : $@convention(thin) (Builtin.Int32, Builtin.Int32) -> Builtin.Int32
  %2 = partial_apply %1(%0, %0) : $@convention(thin) (Builtin.Int32, Builtin.Int32) -> Builtin.Int32
  return %2 : $@callee_owned () -> Builtin.Int32
}
