@@ -879,6 +879,50 @@ bb0:
879879 return %a : $String
880880}
881881
882+ // CHECK-LABEL: sil [ossa] @dontExtendModifyAccess
883+ // CHECK: begin_access
884+ // CHECK-NEXT: alloc_stack
885+ // CHECK-NEXT: copy_addr
886+ // CHECK-NEXT: end_access
887+ // CHECK-NEXT: load
888+ // CHECK-LABEL: } // end sil function 'dontExtendModifyAccess'
889+ sil [ossa] @dontExtendModifyAccess : $@convention(thin) () -> @owned String {
890+ bb0:
891+ %1 = global_addr @globalString : $*String
892+ %3 = begin_access [modify] [dynamic] %1 : $*String
893+ %4 = alloc_stack $String
894+ copy_addr %3 to [initialization] %4 : $*String
895+ end_access %3 : $*String
896+ %6 = load [copy] %4 : $*String
897+ destroy_addr %4 : $*String
898+ dealloc_stack %4 : $*String
899+ return %6 : $String
900+ }
901+
902+ // CHECK-LABEL: sil [ossa] @dontExtendAccessScopeOverEndAccess
903+ // CHECK: begin_access [read] [dynamic] %0 : $*Int
904+ // CHECK-NEXT: begin_access [read] [dynamic] %{{[0-9]+}} : $*String
905+ // CHECK-NEXT: alloc_stack
906+ // CHECK-NEXT: copy_addr
907+ // CHECK-NEXT: end_access %{{[0-9]+}} : $*String
908+ // CHECK-NEXT: end_access %{{[0-9]+}} : $*Int
909+ // CHECK-NEXT: load
910+ // CHECK-LABEL: } // end sil function 'dontExtendAccessScopeOverEndAccess'
911+ sil [ossa] @dontExtendAccessScopeOverEndAccess : $@convention(thin) (@in_guaranteed Int) -> @owned String {
912+ bb0(%0 : $*Int):
913+ %1 = global_addr @globalString : $*String
914+ %2 = begin_access [read] [dynamic] %0 : $*Int
915+ %3 = begin_access [read] [dynamic] %1 : $*String
916+ %4 = alloc_stack $String
917+ copy_addr %3 to [initialization] %4 : $*String
918+ end_access %3 : $*String
919+ end_access %2 : $*Int
920+ %6 = load [copy] %4 : $*String
921+ destroy_addr %4 : $*String
922+ dealloc_stack %4 : $*String
923+ return %6 : $String
924+ }
925+
882926// CHECK-LABEL: sil [ossa] @dontExtendAccessScopeOverBeginAccess : $@convention(thin) (@in Klass) -> () {
883927// CHECK: bb0(%0 : $*Klass):
884928// CHECK: [[STACK:%.*]] = alloc_stack $Klass
0 commit comments