// RUN: %target-swift-frontend -assume-parsing-unqualified-ownership-sil -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{{( 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{{( 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{{( 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{{( 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: @XXX_dtor
  #XXX.init!initializer.1: @XXX_ctor
}
