// RUN: %swift -gnone -O -target x86_64-apple-macosx10.9 -emit-assembly %s -o - | FileCheck %s

// REQUIRES: CODEGENERATOR=X86

// rdar://17999904

// No i386 test right now because we don't actually have a formal pattern there.

import Builtin

class C {}

sil_vtable C {}

sil @_TFC21autorelease_optimized1Cd : $@convention(method) (@owned C) -> @owned Builtin.NativeObject {
bb0(%0 : $C):
  %1 = unchecked_ref_cast %0 : $C to $Builtin.NativeObject // user: %2
  return %1 : $Builtin.NativeObject              // id: %2
}

sil public_external @foo : $@convention(thin) (@owned C) -> @autoreleased C
sil public_external @bar : $@convention(thin) (@owned C) -> ()

sil @baz : $@convention(thin) (@owned C) -> () {
bb0(%0 : $C):
  %1 = function_ref @foo : $@convention(thin) (@owned C) -> @autoreleased C
  %2 = apply %1(%0) : $@convention(thin) (@owned C) -> @autoreleased C

  // This call is just so that we won't tail-call
  // objc_retainAutoreleasedReturnValue, which complicates the test.
  %3 = function_ref @bar : $@convention(thin) (@owned C) -> ()
  apply %3(%2) : $@convention(thin) (@owned C) -> ()
  %5 = tuple ()
  return %5 : $()
}

// CHECK:      callq _foo
// CHECK-NEXT: movq %rax, %rdi
// CHECK-NEXT: callq _objc_retainAutoreleasedReturnValue
