@@ -199,7 +199,7 @@ sil [ossa] @dont_copy_let_properties_with_guaranteed_base : $@convention(thin) (
199199bb0(%x : @guaranteed $ClassLet):
200200 %f = function_ref @black_hole : $@convention(thin) (@guaranteed Klass) -> ()
201201
202- %p = ref_element_addr %x : $ClassLet, #ClassLet.aLet
202+ %p = ref_element_addr [immutable] %x : $ClassLet, #ClassLet.aLet
203203 %v = load [copy] %p : $*Klass
204204 %b = begin_borrow %v : $Klass
205205 apply %f(%b) : $@convention(thin) (@guaranteed Klass) -> ()
@@ -223,7 +223,7 @@ sil [ossa] @dont_copy_let_properties_with_guaranteed_base_and_forwarding_uses :
223223bb0(%x : @guaranteed $ClassLet):
224224 %f = function_ref @black_hole : $@convention(thin) (@guaranteed Klass) -> ()
225225
226- %p = ref_element_addr %x : $ClassLet, #ClassLet.aLet
226+ %p = ref_element_addr [immutable] %x : $ClassLet, #ClassLet.aLet
227227 %v = load [copy] %p : $*Klass
228228 %c = unchecked_ref_cast %v : $Klass to $Klass
229229 %b = begin_borrow %c : $Klass
@@ -247,7 +247,7 @@ bb0(%x : @guaranteed $SubclassLet):
247247 %f = function_ref @black_hole : $@convention(thin) (@guaranteed Klass) -> ()
248248
249249 %u = upcast %x : $SubclassLet to $ClassLet
250- %p = ref_element_addr %u : $ClassLet, #ClassLet.aLet
250+ %p = ref_element_addr [immutable] %u : $ClassLet, #ClassLet.aLet
251251 %v = load [copy] %p : $*Klass
252252 %b = begin_borrow %v : $Klass
253253 apply %f(%b) : $@convention(thin) (@guaranteed Klass) -> ()
@@ -293,7 +293,7 @@ sil [ossa] @dont_copy_let_properties_with_guaranteed_base_structural : $@convent
293293bb0(%x : @guaranteed $ClassLet):
294294 %f = function_ref @black_hole : $@convention(thin) (@guaranteed Klass) -> ()
295295
296- %p = ref_element_addr %x : $ClassLet, #ClassLet.aLetTuple
296+ %p = ref_element_addr [immutable] %x : $ClassLet, #ClassLet.aLetTuple
297297 %q = tuple_element_addr %p : $*(Klass, Klass), 1
298298 %v = load [copy] %q : $*Klass
299299 %b = begin_borrow %v : $Klass
@@ -369,7 +369,7 @@ bb0(%x : @owned $ClassLet):
369369 %f = function_ref @black_hole : $@convention(thin) (@guaranteed Klass) -> ()
370370
371371 %a = begin_borrow %x : $ClassLet
372- %p = ref_element_addr %a : $ClassLet, #ClassLet.aLet
372+ %p = ref_element_addr [immutable] %a : $ClassLet, #ClassLet.aLet
373373 %v = load [copy] %p : $*Klass
374374 apply %f(%v) : $@convention(thin) (@guaranteed Klass) -> ()
375375 destroy_value %v : $Klass
@@ -409,7 +409,7 @@ bb0(%x : @owned $ClassLet):
409409 %f = function_ref @guaranteed_user : $@convention(thin) (@guaranteed Builtin.NativeObject) -> ()
410410
411411 %a = begin_borrow %x : $ClassLet
412- %p = ref_element_addr %a : $ClassLet, #ClassLet.aLet
412+ %p = ref_element_addr [immutable] %a : $ClassLet, #ClassLet.aLet
413413 %v = load [copy] %p : $*Klass
414414 %v_cast = unchecked_ref_cast %v : $Klass to $Builtin.NativeObject
415415 apply %f(%v_cast) : $@convention(thin) (@guaranteed Builtin.NativeObject) -> ()
@@ -1145,7 +1145,7 @@ bb0(%0 : @guaranteed $FakeOptional<ClassLet>):
11451145 switch_enum %0 : $FakeOptional<ClassLet>, case #FakeOptional.some!enumelt: bb1, case #FakeOptional.none!enumelt: bb2
11461146
11471147bb1(%1 : @guaranteed $ClassLet):
1148- %2 = ref_element_addr %1 : $ClassLet, #ClassLet.aLet
1148+ %2 = ref_element_addr [immutable] %1 : $ClassLet, #ClassLet.aLet
11491149 %3 = load [copy] %2 : $*Klass
11501150 apply %f(%3) : $@convention(thin) (@guaranteed Klass) -> ()
11511151 destroy_value %3 : $Klass
@@ -1171,7 +1171,7 @@ bb0(%0 : @owned $FakeOptional<ClassLet>):
11711171 switch_enum %0a : $FakeOptional<ClassLet>, case #FakeOptional.some!enumelt: bb1, case #FakeOptional.none!enumelt: bb2
11721172
11731173bb1(%1 : @guaranteed $ClassLet):
1174- %2 = ref_element_addr %1 : $ClassLet, #ClassLet.aLet
1174+ %2 = ref_element_addr [immutable] %1 : $ClassLet, #ClassLet.aLet
11751175 %3 = load [copy] %2 : $*Klass
11761176 apply %f(%3) : $@convention(thin) (@guaranteed Klass) -> ()
11771177 destroy_value %3 : $Klass
@@ -1201,7 +1201,7 @@ bb0(%0 : $*FakeOptional<ClassLet>):
12011201 switch_enum %0a : $FakeOptional<ClassLet>, case #FakeOptional.some!enumelt: bb1, case #FakeOptional.none!enumelt: bb2
12021202
12031203bb1(%1 : @guaranteed $ClassLet):
1204- %2 = ref_element_addr %1 : $ClassLet, #ClassLet.aLet
1204+ %2 = ref_element_addr [immutable] %1 : $ClassLet, #ClassLet.aLet
12051205 %3 = load [copy] %2 : $*Klass
12061206 apply %f(%3) : $@convention(thin) (@guaranteed Klass) -> ()
12071207 destroy_value %3 : $Klass
@@ -1240,7 +1240,7 @@ bb0c(%0c : @guaranteed $FakeOptional<ClassLet>):
12401240 switch_enum %0d : $FakeOptional<ClassLet>, case #FakeOptional.some!enumelt: bb1, case #FakeOptional.none!enumelt: bb2
12411241
12421242bb1(%1 : @guaranteed $ClassLet):
1243- %2 = ref_element_addr %1 : $ClassLet, #ClassLet.aLet
1243+ %2 = ref_element_addr [immutable] %1 : $ClassLet, #ClassLet.aLet
12441244 %3 = load [copy] %2 : $*Klass
12451245 apply %f(%3) : $@convention(thin) (@guaranteed Klass) -> ()
12461246 destroy_value %3 : $Klass
@@ -1276,7 +1276,7 @@ bb1:
12761276bb2:
12771277 %0b = begin_borrow %0 : $FakeOptional<ClassLet>
12781278 %0b2 = unchecked_enum_data %0b : $FakeOptional<ClassLet>, #FakeOptional.some!enumelt
1279- %2 = ref_element_addr %0b2 : $ClassLet, #ClassLet.aLet
1279+ %2 = ref_element_addr [immutable] %0b2 : $ClassLet, #ClassLet.aLet
12801280 %3 = load [copy] %2 : $*Klass
12811281 apply %f(%3) : $@convention(thin) (@guaranteed Klass) -> ()
12821282 destroy_value %3 : $Klass
@@ -1520,12 +1520,9 @@ bbEnd:
15201520 return %9999 : $()
15211521}
15221522
1523- // Just make sure that we do not crash on this code and convert the 2nd load
1524- // [copy] to a load_borrow.
1523+ // Just make sure that we do not crash on this code
15251524//
15261525// CHECK-LABEL: sil [ossa] @improper_dead_end_block_crasher_test : $@convention(thin) (Builtin.RawPointer) -> () {
1527- // CHECK: load_borrow
1528- // CHECK: load_borrow
15291526// CHECK: } // end sil function 'improper_dead_end_block_crasher_test'
15301527sil [ossa] @improper_dead_end_block_crasher_test : $@convention(thin) (Builtin.RawPointer) -> () {
15311528bb0(%0 : $Builtin.RawPointer):
0 commit comments