// RUN: %empty-directory(%t)
// RUN: %target-sil-opt -assume-parsing-unqualified-ownership-sil -enable-sil-verify-all %s -inline | %FileCheck %s

sil_stage canonical

import Builtin
import Swift
import SwiftShims

sil_global public @sil_global1 : $Builtin.Int32

sil @update_global: $@convention(thin) () -> () {
bb0:
  %sil_global1_addr = global_addr @sil_global1 : $*Builtin.Int32
  %1 = integer_literal $Builtin.Int32, 1
  store %1 to %sil_global1_addr : $*Builtin.Int32
  %4 = tuple ()
  return %4 : $()
}

sil @callee : $@convention(thin) () -> () {
bb0:
  // make it a non-trivial function
  %c1 = builtin "assert_configuration"() : $Builtin.Int32
  %c2 = builtin "assert_configuration"() : $Builtin.Int32
  %c3 = builtin "assert_configuration"() : $Builtin.Int32
  %c4 = builtin "assert_configuration"() : $Builtin.Int32
  %c5 = builtin "assert_configuration"() : $Builtin.Int32
  %c6 = builtin "assert_configuration"() : $Builtin.Int32
  %c7 = builtin "assert_configuration"() : $Builtin.Int32
  %c8 = builtin "assert_configuration"() : $Builtin.Int32
  %c9 = builtin "assert_configuration"() : $Builtin.Int32
  %c10 = builtin "assert_configuration"() : $Builtin.Int32
  %c11 = builtin "assert_configuration"() : $Builtin.Int32
  %c12 = builtin "assert_configuration"() : $Builtin.Int32
  %c13 = builtin "assert_configuration"() : $Builtin.Int32
  %c14 = builtin "assert_configuration"() : $Builtin.Int32
  %c15 = builtin "assert_configuration"() : $Builtin.Int32
  %c16 = builtin "assert_configuration"() : $Builtin.Int32
  %c17 = builtin "assert_configuration"() : $Builtin.Int32
  %c18 = builtin "assert_configuration"() : $Builtin.Int32
  %c19 = builtin "assert_configuration"() : $Builtin.Int32
  %c20 = builtin "assert_configuration"() : $Builtin.Int32
  %r = tuple ()
  return %r : $()
}

// CHECK-LABEL: sil @inline_into_hotblock
// CHECK: builtin
// CHECK: builtin
// CHECK: return
sil @inline_into_hotblock : $@convention(thin) () -> () {
bb0:
  %i1 = integer_literal $Builtin.Int1, -1
  %ex = builtin "int_expect_Int1"(undef : $Builtin.Int1, %i1 : $Builtin.Int1) : $Builtin.Int1
  cond_br %ex, bb1, bb2

bb1:
  %f = function_ref @callee : $@convention(thin) () -> ()
  %a = apply %f() : $@convention(thin) () -> ()
  br bb2

bb2:
  %r = tuple ()
  return %r : $()
}

// CHECK-LABEL: sil @dont_inline_into_coldblock__simple
// CHECK: function_ref
// CHECK: apply
// CHECK: return
sil @dont_inline_into_coldblock__simple : $@convention(thin) () -> () {
bb0:
  %i0 = integer_literal $Builtin.Int1, 0
  %ex = builtin "int_expect_Int1"(undef : $Builtin.Int1, %i0 : $Builtin.Int1) : $Builtin.Int1
  cond_br %ex, bb1, bb2

bb1:
  %f = function_ref @callee : $@convention(thin) () -> ()
  %a = apply %f() : $@convention(thin) () -> ()
  br bb2

bb2:
  %r = tuple ()
  return %r : $()
}

// CHECK-LABEL: sil @dont_inline_into_coldblock__condition_is_arg__simple
// CHECK: function_ref
// CHECK: apply
// CHECK: return
sil @dont_inline_into_coldblock__condition_is_arg__simple : $@convention(thin) () -> () {
bb0:
  %i0 = integer_literal $Builtin.Int1, 0
  %i1 = integer_literal $Builtin.Int1, -1
  %ex = builtin "int_expect_Int1"(undef : $Builtin.Int1, %i1 : $Builtin.Int1) : $Builtin.Int1
  cond_br %ex, bb1, bb2

bb1:
  br bb3(%i0 : $Builtin.Int1)

bb2:
  br bb3(%i1 : $Builtin.Int1)

bb3(%c : $Builtin.Int1):
  cond_br %c, bb4, bb5

bb4:
  %f = function_ref @callee : $@convention(thin) () -> ()
  %a = apply %f() : $@convention(thin) () -> ()
  br bb5

bb5:
  %r = tuple ()
  return %r : $()
}

// CHECK-LABEL: sil @dont_inline_into_coldblock__condition_is_arg__complex
// CHECK: function_ref
// CHECK: apply
// CHECK: return
sil @dont_inline_into_coldblock__condition_is_arg__complex : $@convention(thin) () -> () {
bb0:
  %i0 = integer_literal $Builtin.Int1, 0
  %i1 = integer_literal $Builtin.Int1, -1
  %ex = builtin "int_expect_Int1"(undef : $Builtin.Int1, %i1 : $Builtin.Int1) : $Builtin.Int1
  cond_br %ex, bb1, bb4

bb1:
  cond_br undef, bb2, bb3

bb2:
  br bb5(%i0 : $Builtin.Int1)

bb3:
  br bb5(%i0 : $Builtin.Int1)

bb4:
  br bb5(%i1 : $Builtin.Int1)

bb5(%c : $Builtin.Int1):
  cond_br %c, bb6, bb7

bb6:
  %f = function_ref @callee : $@convention(thin) () -> ()
  %a = apply %f() : $@convention(thin) () -> ()
  br bb7

bb7:
  %r = tuple ()
  return %r : $()
}

sil @regular_large_callee : $@convention(thin) () -> () {
bb0:
  // make it a "large" function
  %c1 = builtin "assert_configuration"() : $Builtin.Int32
  %c2 = builtin "assert_configuration"() : $Builtin.Int32
  %c3 = builtin "assert_configuration"() : $Builtin.Int32
  %c4 = builtin "assert_configuration"() : $Builtin.Int32
  %c5 = builtin "assert_configuration"() : $Builtin.Int32
  %c6 = builtin "assert_configuration"() : $Builtin.Int32
  %c7 = builtin "assert_configuration"() : $Builtin.Int32
  %c8 = builtin "assert_configuration"() : $Builtin.Int32
  %c9 = builtin "assert_configuration"() : $Builtin.Int32
  %c10 = builtin "assert_configuration"() : $Builtin.Int32
  %c11 = builtin "assert_configuration"() : $Builtin.Int32
  %c12 = builtin "assert_configuration"() : $Builtin.Int32
  %c13 = builtin "assert_configuration"() : $Builtin.Int32
  %c14 = builtin "assert_configuration"() : $Builtin.Int32
  %c15 = builtin "assert_configuration"() : $Builtin.Int32
  %c16 = builtin "assert_configuration"() : $Builtin.Int32
  %c17 = builtin "assert_configuration"() : $Builtin.Int32
  %c18 = builtin "assert_configuration"() : $Builtin.Int32
  %c19 = builtin "assert_configuration"() : $Builtin.Int32
  %c20 = builtin "assert_configuration"() : $Builtin.Int32
  %c21 = builtin "assert_configuration"() : $Builtin.Int32
  %c22 = builtin "assert_configuration"() : $Builtin.Int32
  %c23 = builtin "assert_configuration"() : $Builtin.Int32
  %c25 = builtin "assert_configuration"() : $Builtin.Int32
  %c26 = builtin "assert_configuration"() : $Builtin.Int32
  %c27 = builtin "assert_configuration"() : $Builtin.Int32
  %c28 = builtin "assert_configuration"() : $Builtin.Int32
  %c29 = builtin "assert_configuration"() : $Builtin.Int32
  %c30 = builtin "assert_configuration"() : $Builtin.Int32

  %f = function_ref @update_global: $@convention(thin) () -> ()
  apply %f() : $@convention(thin) () -> ()

  %r = tuple ()
  return %r : $()
}

// CHECK-LABEL: sil @dont_inline_regular_large_callee
// CHECK: function_ref
// CHECK: apply
// CHECK: return
sil @dont_inline_regular_large_callee : $@convention(thin) () -> () {
bb0:
  %f = function_ref @regular_large_callee : $@convention(thin) () -> ()
  %a = apply %f() : $@convention(thin) () -> ()
  %r = tuple ()
  return %r : $()
}

sil @large_callee_on_fast_path : $@convention(thin) () -> () {
bb0:
  %f = builtin "onFastPath"() : $()
  // make it a "large" function
  %c1 = builtin "assert_configuration"() : $Builtin.Int32
  %c2 = builtin "assert_configuration"() : $Builtin.Int32
  %c3 = builtin "assert_configuration"() : $Builtin.Int32
  %c4 = builtin "assert_configuration"() : $Builtin.Int32
  %c5 = builtin "assert_configuration"() : $Builtin.Int32
  %c6 = builtin "assert_configuration"() : $Builtin.Int32
  %c7 = builtin "assert_configuration"() : $Builtin.Int32
  %c8 = builtin "assert_configuration"() : $Builtin.Int32
  %c9 = builtin "assert_configuration"() : $Builtin.Int32
  %c10 = builtin "assert_configuration"() : $Builtin.Int32
  %c11 = builtin "assert_configuration"() : $Builtin.Int32
  %c12 = builtin "assert_configuration"() : $Builtin.Int32
  %c13 = builtin "assert_configuration"() : $Builtin.Int32
  %c14 = builtin "assert_configuration"() : $Builtin.Int32
  %c15 = builtin "assert_configuration"() : $Builtin.Int32
  %c16 = builtin "assert_configuration"() : $Builtin.Int32
  %c17 = builtin "assert_configuration"() : $Builtin.Int32
  %c18 = builtin "assert_configuration"() : $Builtin.Int32
  %c19 = builtin "assert_configuration"() : $Builtin.Int32
  %c20 = builtin "assert_configuration"() : $Builtin.Int32
  %c21 = builtin "assert_configuration"() : $Builtin.Int32
  %c22 = builtin "assert_configuration"() : $Builtin.Int32
  %c23 = builtin "assert_configuration"() : $Builtin.Int32
  %c25 = builtin "assert_configuration"() : $Builtin.Int32
  %c26 = builtin "assert_configuration"() : $Builtin.Int32
  %c27 = builtin "assert_configuration"() : $Builtin.Int32
  %c28 = builtin "assert_configuration"() : $Builtin.Int32
  %c29 = builtin "assert_configuration"() : $Builtin.Int32
  %c30 = builtin "assert_configuration"() : $Builtin.Int32
  %r = tuple ()
  return %r : $()
}

// CHECK-LABEL: sil @inline_large_callee_on_fast_path
// CHECK: builtin
// CHECK-NOT: apply
// CHECK: return
sil @inline_large_callee_on_fast_path : $@convention(thin) () -> () {
bb0:
  %f = function_ref @large_callee_on_fast_path : $@convention(thin) () -> ()
  %a = apply %f() : $@convention(thin) () -> ()
  %r = tuple ()
  return %r : $()
}

