// RUN: %target-swift-frontend %s -swift-version 4 -emit-ir -enforce-exclusivity=checked | %FileCheck --check-prefix=CHECK --check-prefix=CHECK-%target-cpu %s

sil_stage canonical

import Swift

class A {
   @_hasStorage final var x: Int { get set }
   init(x: Int)
}
sil_vtable A {}

sil public_external @changeInt : $@convention(thin) (@inout Int) -> ()

// CHECK-LABEL: define {{.*}} @test1(
sil [ossa] @test1 : $@convention(thin) (@owned A) -> Int {
bb0(%0 : @owned $A):
  // CHECK: [[SCRATCH0:%.*]] = alloca [[BUFFER_T:\[.* x i8\]]],
  // CHECK: [[SCRATCH1:%.*]] = alloca [[BUFFER_T:\[.* x i8\]]],

  // CHECK: [[PROP:%.*]] = getelementptr inbounds [[C:%T11exclusivity1AC]], %T11exclusivity1AC* %0, i32 0, i32 1
  %3 = ref_element_addr %0 : $A, #A.x

  // CHECK: [[T0:%.*]] = bitcast [[BUFFER_T]]* [[SCRATCH0]] to i8*
  // CHECK: call void @llvm.lifetime.start.p0i8(i64 -1, i8* [[T0]])
  // CHECK: [[T0:%.*]] = bitcast [[INT:%TSi]]* [[PROP]] to i8*
  // CHECK: call void @swift_beginAccess(i8* [[T0]], [[BUFFER_T]]* [[SCRATCH0]], [[SIZE_T:i32|i64]] 32, i8* null)
    %4 = begin_access [read] [dynamic] %3 : $*Int

  // CHECK: [[T0:%.*]] = getelementptr inbounds [[INT]], [[INT]]* %1, i32 0, i32 0
  // CHECK: load {{.*}}* [[T0]]
  %5 = load [trivial] %4 : $*Int

  // CHECK: call void @swift_endAccess([[BUFFER_T]]* [[SCRATCH0]])
  // CHECK: [[T0:%.*]] = bitcast [[BUFFER_T]]* [[SCRATCH0]] to i8*
  // CHECK: call void @llvm.lifetime.end.p0i8(i64 -1, i8* [[T0]])
  end_access %4 : $*Int

  %9 = function_ref @changeInt : $@convention(thin) (@inout Int) -> ()

  // CHECK: [[PROP:%.*]] = getelementptr inbounds [[C:%T11exclusivity1AC]], %T11exclusivity1AC* %0, i32 0, i32 1
  %11 = ref_element_addr %0 : $A, #A.x

  // CHECK: [[T0:%.*]] = bitcast [[BUFFER_T]]* [[SCRATCH1]] to i8*
  // CHECK: call void @llvm.lifetime.start.p0i8(i64 -1, i8* [[T0]])
  // CHECK: [[T0:%.*]] = bitcast [[INT:%TSi]]* [[PROP]] to i8*
  // CHECK: call void @swift_beginAccess(i8* [[T0]], [[BUFFER_T]]* [[SCRATCH1]], [[SIZE_T:i32|i64]] 33, i8* null)
  %12 = begin_access [modify] [dynamic] %11 : $*Int

  // CHECK: call {{.*}} @changeInt([[INT]]*{{.*}} [[PROP]])
  %13 = apply %9(%12) : $@convention(thin) (@inout Int) -> ()

  // CHECK: call void @swift_endAccess([[BUFFER_T]]* [[SCRATCH1]])
  // CHECK: [[T0:%.*]] = bitcast [[BUFFER_T]]* [[SCRATCH1]] to i8*
  // CHECK: call void @llvm.lifetime.end.p0i8(i64 -1, i8* [[T0]])
  end_access %12 : $*Int
  destroy_value %0 : $A
  return %5 : $Int
}
