// RUN: %target-sil-opt -enable-sil-ownership -enable-sil-verify-all %s -mandatory-inlining | %FileCheck %s

sil_stage raw

import Builtin
import Swift

@_fixed_layout
public struct S {
  public let y: Int
}

sil_global [let] @my_global : $Int

sil hidden [global_init] [ossa] @private_function : $@convention(thin) () -> Builtin.RawPointer {
bb0:
  %4 = global_addr @my_global : $*Int
  %5 = address_to_pointer %4 : $*Int to $Builtin.RawPointer
  return %5 : $Builtin.RawPointer
}

// This function is transparent, but not serialized. We cannot inline it into
// serialized_caller.
sil [transparent] [ossa] @transparent_callee : $@convention(thin) () -> Int {
bb0:
  %0 = function_ref @private_function : $@convention(thin) () -> Builtin.RawPointer
  %1 = apply %0() : $@convention(thin) () -> Builtin.RawPointer
  %2 = pointer_to_address %1 : $Builtin.RawPointer to [strict] $*Int
  %3 = load [trivial] %2 : $*Int
  return %3 : $Int
}

// CHECK-LABEL: sil [serialized] [ossa] @serialized_callee
sil [serialized] [ossa] @serialized_callee : $@convention(method) (@thin S.Type) -> S {
bb0(%0 : $@thin S.Type):
  %1 = alloc_box ${ var S }, var, name "self"
  %2 = mark_uninitialized [rootself] %1 : ${ var S }
  %3 = project_box %2 : ${ var S }, 0
  // CHECK: function_ref @transparent_callee
  %4 = function_ref @transparent_callee : $@convention(thin) () -> Int
  %5 = apply %4() : $@convention(thin) () -> Int
  %6 = struct_element_addr %3 : $*S, #S.y
  assign %5 to %6 : $*Int
  %8 = load [trivial] %3 : $*S
  destroy_value %2 : ${ var S }
  // CHECK: return
  return %8 : $S
}

