// RUN: %target-swift-frontend %s -emit-ir | %FileCheck %s

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{{( dllexport)?}}{{( 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{{( dllexport)?}}{{( 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))
