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

import Builtin
import Swift
import SwiftShims

private class XXX{}

sil @XXX_dtor : $@convention(method) (@owned XXX) -> ()
sil @XXX_ctor : $@convention(method) (@owned XXX) -> @owned XXX

// CHECK: target datalayout

// No @owned or @out parameters -- function is not read only at LLVM level,
// because Swift level read only attribute is not automatically mapped
// to the LLVM read only attribute, unless IRGen can prove by analyzing
// the function body that this function is really read only.

// CHECK-NOT: ; Function Attrs: readonly
// CHECK: define{{( dllexport)?}}{{( protected)?}} swiftcc void @function_foo(
sil [readonly] @function_foo : $@convention(thin) (Int) -> () {
bb0(%0 : $Int):
  %1 = tuple ()
  return %1 : $()
}

// No @owned or @out parameters -- function is not read only at LLVM level,
// because Swift level read none attribute is not automatically mapped
// to the LLVM read only attribute, unless IRGen can prove by analyzing
// the function body that this function is really read only or read none.

// CHECK-NOT: ; Function Attrs: readonly
// CHECK: define{{( dllexport)?}}{{( protected)?}} swiftcc void @function_foo2(
sil [readnone] @function_foo2 : $@convention(thin) (Int) -> () {
bb0(%0 : $Int):
  %1 = tuple ()
  return %1 : $()
}

// There's an @owned parameter, and destructors can call arbitrary code
// -- function is not read only at LLVM level

// CHECK-NOT: ; Function Attrs: readonly
// CHECK: define{{( dllexport)?}}{{( protected)?}} swiftcc void @function_bar(
sil [readonly] @function_bar : $@convention(thin) (@owned XXX) -> () {
bb0(%0 : $XXX):
  strong_release %0 : $XXX
  %1 = tuple ()
  return %1 : $()
}

// There's an @out parameter -- function is not read only at LLVM level

// CHECK-NOT: ; Function Attrs: readonly
// CHECK: define{{( dllexport)?}}{{( protected)?}} swiftcc void @function_baz(
sil [readonly] @function_baz : $@convention(thin) () -> (@out Any) {
bb0(%0 : $*Any):
  init_existential_addr %0 : $*Any, $()
  %1 = tuple ()
  return %1 : $()
}

sil_vtable XXX {
  #XXX.deinit!deallocator.1: @XXX_dtor
  #XXX.init!initializer.1: @XXX_ctor
}
