// RUN: %target-swift-frontend -assume-parsing-unqualified-ownership-sil %s -emit-ir | %FileCheck %s

// REQUIRES: objc_interop

sil_stage canonical

import Swift

class Foo {}
sil_vtable Foo {}

sil @$S10objc_block3FooCfD : $Foo -> ()

sil @call_block : $@convention(thin) (@convention(block) Foo -> Foo, Foo) -> Foo {
entry(%b : $@convention(block) Foo -> Foo, %x : $Foo):
  %y = apply %b(%x) : $@convention(block) Foo -> Foo
  return %y : $Foo
}
// CHECK-LABEL: define{{( protected)?}} swiftcc %T10objc_block3FooC* @call_block(%objc_block*, %T10objc_block3FooC*) {{.*}} {
// CHECK:       entry:
// CHECK:         [[T0:%.*]] = getelementptr inbounds %objc_block, %objc_block* %0, i32 0, i32 3
// CHECK:         [[T1:%.*]] = load i8*, i8** [[T0]]
// CHECK:         [[T2:%.*]] = bitcast i8* [[T1]] to i8* (%objc_block*, i8*)*
// CHECK:         [[T3:%.*]] = bitcast %T10objc_block3FooC* %1 to i8*
// CHECK:         [[T4:%.*]] = call i8* [[T2]](%objc_block* %0, i8* [[T3]])
// CHECK:         [[T5:%.*]] = bitcast i8* [[T4]] to %T10objc_block3FooC*
// CHECK:         ret %T10objc_block3FooC* [[T5]]
// CHECK:       }

sil @generic : $@convention(thin) <T> (@in T) -> ()

sil @generic_with_block : $@convention(thin) (@in @convention(block) () -> ()) -> () {
entry(%b : $*@convention(block) () -> ()):
  %f = function_ref @generic : $@convention(thin) <T> (@in T) -> ()
  %z = apply %f<@convention(block) () -> ()>(%b) : $@convention(thin) <T> (@in T) -> ()
  return %z : $()
}

// CHECK-LABEL: define{{( protected)?}} swiftcc void @generic_with_block(%objc_block** noalias nocapture dereferenceable({{.*}}))
// --                                                                               0x100_0001 = block convention, 1 arg
// CHECK: call %swift.type* @swift_getFunctionTypeMetadata0([[WORD:i(32|64)]] 65536, %swift.type* getelementptr inbounds (%swift.full_type, %swift.full_type* @"$SytN", i32 0, i32 1))
