File tree Expand file tree Collapse file tree 2 files changed +34
-0
lines changed Expand file tree Collapse file tree 2 files changed +34
-0
lines changed Original file line number Diff line number Diff line change @@ -1590,6 +1590,11 @@ class AccessUseDefChainCloner
1590
1590
return cloneProjection (cast, sourceOper);
1591
1591
}
1592
1592
1593
+ SILValue visitNestedAccess (BeginAccessInst *access) {
1594
+ // The cloner does not currently know how to handle begin_access
1595
+ return SILValue ();
1596
+ }
1597
+
1593
1598
SILValue visitAccessProjection (SingleValueInstruction *projectedAddr,
1594
1599
Operand *sourceOper) {
1595
1600
return cloneProjection (projectedAddr, sourceOper);
Original file line number Diff line number Diff line change @@ -830,3 +830,32 @@ bb0(%0 : @guaranteed $Klass):
830
830
return %6 : $()
831
831
}
832
832
833
+ class TestKlass {
834
+ var testStruct: NonTrivialStruct
835
+ }
836
+
837
+ sil [ossa] @use_klass : $@convention(thin) (@guaranteed Klass) -> ()
838
+
839
+ // Currently ownership rauw does not handle this case
840
+ // CHECK-LABEL: sil [ossa] @cse_ossa_accesspathclonetest :
841
+ // CHECK: struct_element_addr
842
+ // CHECK: struct_element_addr
843
+ // CHECK-LABEL: } // end sil function 'cse_ossa_accesspathclonetest'
844
+ sil [ossa] @cse_ossa_accesspathclonetest : $@convention(thin) (@guaranteed TestKlass) -> () {
845
+ bb0(%0 : @guaranteed $TestKlass):
846
+ %1 = ref_element_addr %0 : $TestKlass, #TestKlass.testStruct
847
+ %2 = begin_access [modify] [dynamic] %1 : $*NonTrivialStruct
848
+ %3 = struct_element_addr %2 : $*NonTrivialStruct, #NonTrivialStruct.val
849
+ %4 = load_borrow %3 : $*Klass
850
+ %f = function_ref @use_klass : $@convention(thin) (@guaranteed Klass) -> ()
851
+ %c = apply %f(%4) : $@convention(thin) (@guaranteed Klass) -> ()
852
+ end_borrow %4 : $Klass
853
+ %3a = struct_element_addr %2 : $*NonTrivialStruct, #NonTrivialStruct.val
854
+ %4a = load_borrow %3a : $*Klass
855
+ %ca = apply %f(%4a) : $@convention(thin) (@guaranteed Klass) -> ()
856
+ end_borrow %4a : $Klass
857
+ end_access %2 : $*NonTrivialStruct
858
+ %139 = tuple ()
859
+ return %139 : $()
860
+ }
861
+
You can’t perform that action at this time.
0 commit comments