// RUN: %target-swift-frontend %s -emit-ir | %FileCheck -check-prefix=CHECK -check-prefix=CHECK-%target-ptrsize %s
import Swift
import Builtin

struct Huge {
  var x, y, z, w, v: Builtin.Word
}

@_alignment(16)
struct HugeAlignment {
  var x, y, z, w, v: Builtin.Word
}

// TODO: could be the context param
// CHECK-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc void @huge_method(%T17indirect_argument4HugeV* noalias nocapture swiftself dereferenceable({{.*}}))
// CHECK-NOT:     alloca
// CHECK:         call swiftcc void @huge_method(%T17indirect_argument4HugeV* noalias nocapture swiftself dereferenceable({{.*}}) %0)
sil @huge_method : $@convention(method) (Huge) -> () {
entry(%x : $Huge):
  %f = function_ref @huge_method : $@convention(method) (Huge) -> ()
  %z = apply %f(%x) : $@convention(method) (Huge) -> ()
  return %z : $()
}

// CHECK-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc void @huge_param(%T17indirect_argument4HugeV* noalias nocapture dereferenceable({{.*}}))
// CHECK-NOT:         alloca
// CHECK:         call swiftcc void @huge_param(%T17indirect_argument4HugeV* noalias nocapture dereferenceable({{.*}}) %0)
sil @huge_param : $@convention(thin) (Huge) -> () {
entry(%x : $Huge):
  %f = function_ref @huge_param : $@convention(thin) (Huge) -> ()
  %z = apply %f(%x) : $@convention(thin) (Huge) -> ()
  return %z : $()
}

// CHECK-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc void @huge_alignment_param(%T17indirect_argument13HugeAlignmentV* noalias nocapture dereferenceable({{.*}}))
// CHECK-NOT:     alloca
// CHECK:         call swiftcc void @huge_alignment_param(%T17indirect_argument13HugeAlignmentV* noalias nocapture dereferenceable({{.*}}) %0)
sil @huge_alignment_param : $@convention(thin) (HugeAlignment) -> () {
entry(%x : $HugeAlignment):
  %f = function_ref @huge_alignment_param : $@convention(thin) (HugeAlignment) -> ()
  %z = apply %f(%x) : $@convention(thin) (HugeAlignment) -> ()
  return %z : $()
}

// CHECK-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc void @huge_param_and_return(%T17indirect_argument4HugeV* noalias nocapture sret, %T17indirect_argument4HugeV* noalias nocapture dereferenceable({{.*}}))
// CHECK:         [[TMP_RET:%.*]] = alloca
// CHECK:         call swiftcc void @huge_param_and_return(%T17indirect_argument4HugeV* noalias nocapture sret [[TMP_RET]], %T17indirect_argument4HugeV* noalias nocapture dereferenceable({{.*}}) %1)
sil @huge_param_and_return : $@convention(thin) (Huge) -> Huge {
entry(%x : $Huge):
  %f = function_ref @huge_param_and_return : $@convention(thin) (Huge) -> Huge
  %z = apply %f(%x) : $@convention(thin) (Huge) -> Huge
  return %z : $Huge
}

// CHECK-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc void @huge_param_and_indirect_return(%T17indirect_argument4HugeV* noalias nocapture sret, %T17indirect_argument4HugeV* noalias nocapture dereferenceable({{.*}}))
// CHECK-NOT:     alloca
// CHECK:         call swiftcc void @huge_param_and_indirect_return(%T17indirect_argument4HugeV* noalias nocapture sret %0, %T17indirect_argument4HugeV* noalias nocapture dereferenceable({{.*}}) %1)
sil @huge_param_and_indirect_return : $@convention(thin) (Huge) -> @out Huge {
entry(%o : $*Huge, %x : $Huge):
  %f = function_ref @huge_param_and_indirect_return : $@convention(thin) (Huge) -> @out Huge
  %z = apply %f(%o, %x) : $@convention(thin) (Huge) -> @out Huge
  return %z : $()
}

// CHECK-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc void @huge_partial_application(%T17indirect_argument4HugeV* noalias nocapture dereferenceable({{.*}}), %T17indirect_argument4HugeV* noalias nocapture dereferenceable({{.*}}))
// CHECK-NOT:     alloca
// CHECK:         [[CLOSURE:%.*]] = call noalias %swift.refcounted* @swift_allocObject
// CHECK:         bitcast %swift.refcounted* [[CLOSURE]] to <{ %swift.refcounted, %T17indirect_argument4HugeV }>*
// CHECK:         call swiftcc void @"$s24huge_partial_applicationTA"(%T17indirect_argument4HugeV* noalias nocapture dereferenceable({{.*}}) %0, %swift.refcounted* swiftself [[CLOSURE]])
// CHECK:       define internal swiftcc void @"$s24huge_partial_applicationTA"(%T17indirect_argument4HugeV* noalias nocapture dereferenceable({{.*}}), %swift.refcounted* swiftself)
// CHECK:         [[TMP_ARG:%.*]] = alloca
// CHECK-NOT:     tail
// CHECK:         call swiftcc void @huge_partial_application(%T17indirect_argument4HugeV* noalias nocapture dereferenceable({{.*}}) %0, %T17indirect_argument4HugeV* noalias nocapture dereferenceable({{.*}}) [[TMP_ARG]])
sil @huge_partial_application : $@convention(thin) (Huge, Huge) -> () {
entry(%x : $Huge, %y : $Huge):
  %f = function_ref @huge_partial_application : $@convention(thin) (Huge, Huge) -> ()
  %a = partial_apply %f(%y) : $@convention(thin) (Huge, Huge) -> ()
  %z = apply %a(%x) : $@convention(thick) @callee_owned (Huge) -> ()
  return %z : $()
}

// CHECK-LABEL: define{{( dllexport)?}}{{( protected)?}} swiftcc void @huge_partial_application_stret(%T17indirect_argument4HugeV* noalias nocapture sret, %T17indirect_argument4HugeV* noalias nocapture dereferenceable({{.*}}), %T17indirect_argument4HugeV* noalias nocapture dereferenceable({{.*}}))
// CHECK:         [[TMP_RET:%.*]] = alloca
// CHECK:         [[CLOSURE:%.*]] = call noalias %swift.refcounted* @swift_allocObject
// CHECK:         bitcast %swift.refcounted* [[CLOSURE]] to <{ %swift.refcounted, %T17indirect_argument4HugeV }>*
// CHECK:         call swiftcc void @"$s30huge_partial_application_stretTA"(%T17indirect_argument4HugeV* noalias nocapture sret [[TMP_RET]], %T17indirect_argument4HugeV* noalias nocapture dereferenceable({{.*}}) %1, %swift.refcounted* swiftself [[CLOSURE]])
// CHECK:       define internal swiftcc void @"$s30huge_partial_application_stretTA"(%T17indirect_argument4HugeV* noalias nocapture sret, %T17indirect_argument4HugeV* noalias nocapture dereferenceable({{.*}}), %swift.refcounted* swiftself)
// CHECK:         [[TMP_ARG:%.*]] = alloca
// CHECK-NOT:     tail
// CHECK:         call swiftcc void @huge_partial_application_stret(%T17indirect_argument4HugeV* noalias nocapture sret %0, %T17indirect_argument4HugeV* noalias nocapture dereferenceable({{.*}}) %1, %T17indirect_argument4HugeV* noalias nocapture dereferenceable({{.*}}) [[TMP_ARG]])
sil @huge_partial_application_stret : $@convention(thin) (Huge, Huge) -> Huge {
entry(%x : $Huge, %y : $Huge):
  %f = function_ref @huge_partial_application_stret : $@convention(thin) (Huge, Huge) -> Huge
  %a = partial_apply %f(%y) : $@convention(thin) (Huge, Huge) -> Huge
  %z = apply %a(%x) : $@convention(thick) @callee_owned (Huge) -> Huge
  return %z : $Huge
}
