// RUN: %target-swift-frontend -module-name=test -Onone -emit-ir %s | %FileCheck %s

// CHECK-DAG: define linkonce_odr hidden swiftcc void @shared_external_test()
// CHECK-DAG: declare swiftcc void @public_external_test()
// Non-public external symbols are emitted into clients.
// CHECK-DAG: define available_externally hidden swiftcc void @hidden_external_test()
// CHECK-NOT: public_external_unused_test


sil public_external @public_external_test : $@convention(thin)  () -> () {
  %0 = tuple()
  return %0 : $()
}

sil hidden_external @hidden_external_test : $@convention(thin)  () -> () {
  %0 = tuple()
  return %0 : $()
}

sil shared_external @shared_external_test : $@convention(thin)  () -> () {
  %0 = tuple()
  return %0 : $()
}

sil public_external @public_external_unused_test : $@convention(thin)  () -> () {
  %0 = tuple()
  return %0 : $()
}

sil public @use_all_symbols : $@convention(thin)  () -> () {
  %0 = function_ref @public_external_test : $@convention(thin)  () -> ()
  %1 = function_ref @hidden_external_test : $@convention(thin)  () -> ()
  %2 = function_ref @shared_external_test : $@convention(thin)  () -> ()

  apply %0() : $@convention(thin)  () -> ()
  apply %1() : $@convention(thin)  () -> ()
  apply %2() : $@convention(thin)  () -> ()

  %24 = tuple()
  return %24 : $()
}

