// RUN: %target-sil-opt -assume-parsing-unqualified-ownership-sil -enable-sil-verify-all %s -early-inline -sil-inline-threshold=50 | %FileCheck %s

sil_stage canonical

import Builtin
import Swift

sil [_semantics "no_inline_plz"] @callee_func : $@convention(thin) () -> Int32 {
bb0:
  %0 = integer_literal $Builtin.Int32, 3           // user: %1
  %1 = struct $Int32 (%0 : $Builtin.Int32)         // user: %2
  return %1 : $Int32                               // id: %2
}

//Not every @_semantics should be skipped during the early inlining pass, but
//only those ones which are explicitly listed in shouldSkipApplyDuringEarlyInlining.

//CHECK-LABEL: caller_func
//CHECK-NOT: function_ref
//CHECK-NOT: apply
//CHECK: end sil function 'caller_func'
sil @caller_func : $@convention(thin) () -> Int32 {
bb0:
  %0 = function_ref @callee_func : $@convention(thin) () -> Int32 // user: %1
  %1 = apply %0() : $@convention(thin) () -> Int32                // user: %2
  return %1 : $Int32                                  // id: %2
}

sil [_semantics "array.make_mutable"] @callee_func_with_to_be_skipped_during_inlining_semantics : $@convention(method) (@inout Int32) -> Int32 {
bb0(%self : $*Int32):
  %0 = integer_literal $Builtin.Int32, 3           // user: %1
  %1 = struct $Int32 (%0 : $Builtin.Int32)         // user: %2
  return %1 : $Int32                               // id: %2
}

//Not every @_semantics should be skipped during the early inlining pass, but
//only those ones which are explicitly listed in shouldSkipApplyDuringEarlyInlining.

//CHECK-LABEL: caller_func2
//CHECK: function_ref
//CHECK: apply
//CHECK: end sil function 'caller_func2'
sil @caller_func2 : $@convention(thin) () -> Int32 {
bb0:
  %self = alloc_stack $Int32
  %0 = function_ref @callee_func_with_to_be_skipped_during_inlining_semantics  : $@convention(method) (@inout Int32) -> Int32 // user: %1
  %1 = apply %0(%self) : $@convention(method) (@inout Int32) -> Int32                 // user: %2
  dealloc_stack %self : $*Int32
  return %1 : $Int32                                  // id: %2
}

// A function annotated with the @effects(readonly) attribute.
sil [readonly] @callee_func2 : $@convention(thin) () -> Int32 {
bb0:
  %0 = integer_literal $Builtin.Int32, 3           // user: %1
  %1 = struct $Int32 (%0 : $Builtin.Int32)         // user: %2
  return %1 : $Int32                               // id: %2
}

//CHECK-LABEL: caller_func1
//CHECK: function_ref
//CHECK: apply
//CHECK-NEXT: ret
sil @caller_func1 : $@convention(thin) () -> Int32 {
bb0:
  %0 = function_ref @callee_func2 : $@convention(thin) () -> Int32 // user: %1
  %1 = apply %0() : $@convention(thin) () -> Int32                 // user: %2
  return %1 : $Int32                                   // id: %2
}

