// 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()
// CHECK-DAG: declare 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 : $()
}

