// RUN: %target-swift-frontend -parse-sil -emit-ir %s | %FileCheck %s
// REQUIRES: OS=macosx

// Make sure that we are using type lowering and that we are handling the return
// value correctly.

sil_stage canonical

import Builtin

struct Foo {
  var t1 : Builtin.Int32
  var c1 : Builtin.NativeObject
  var t2 : Builtin.Int32
  var c2 : Builtin.NativeObject
  var t3 : Builtin.Int32
}

// CHECK: define{{( protected)?}} swiftcc void @non_trivial(
// CHECK: [[GEP1:%.*]] = getelementptr inbounds %T019copy_value_destroy_B03FooV, %T019copy_value_destroy_B03FooV* %1, i32 0, i32 2
// CHECK-NEXT: [[VAL1:%.*]] = load %swift.refcounted*, %swift.refcounted** [[GEP1]], align 8
// CHECK: [[GEP2:%.*]] = getelementptr inbounds %T019copy_value_destroy_B03FooV, %T019copy_value_destroy_B03FooV* %1, i32 0, i32 5
// CHECK-NEXT: [[VAL2:%.*]] = load %swift.refcounted*, %swift.refcounted** [[GEP2]], align 8
// CHECK: call %swift.refcounted* @swift_retain(%swift.refcounted* returned [[VAL1]])
// CHECK: call %swift.refcounted* @swift_retain(%swift.refcounted* returned [[VAL2]])
// CHECK: call void @swift_release(%swift.refcounted* [[VAL1]])
// CHECK: call void @swift_release(%swift.refcounted* [[VAL2]])
sil [ossa] @non_trivial : $@convention(thin) (@guaranteed Foo) -> () {
bb0(%0 : @guaranteed $Foo):
  %1 = copy_value %0 : $Foo
  destroy_value %1 : $Foo
  %2 = tuple()
  return %2 : $()
}

// CHECK: define{{( protected)?}} swiftcc void @non_trivial_unowned(
// CHECK: call %swift.refcounted* @swift_unownedRetainStrong(%swift.refcounted* returned %0)
// CHECK: call void @swift_release(%swift.refcounted* %0)
sil [ossa] @non_trivial_unowned : $@convention(thin) (@guaranteed Builtin.NativeObject) -> () {
bb0(%0 : @guaranteed $Builtin.NativeObject):
  %1 = ref_to_unowned %0 : $Builtin.NativeObject to $@sil_unowned Builtin.NativeObject
  %2 = copy_unowned_value %1 : $@sil_unowned Builtin.NativeObject
  destroy_value %2 : $Builtin.NativeObject
  %9999 = tuple()
  return %9999 : $()
}
