Skip to content

Commit 2c39aa1

Browse files
authored
Merge pull request #29534 from atrick/escape-access-marker
EscapeAnalysis: add support for access markers.
2 parents 5661bff + 4028ac2 commit 2c39aa1

File tree

2 files changed

+23
-0
lines changed

2 files changed

+23
-0
lines changed

lib/SILOptimizer/Analysis/EscapeAnalysis.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,7 @@ SILValue EscapeAnalysis::getPointerBase(SILValue value) {
122122
case ValueKind::StructElementAddrInst:
123123
case ValueKind::StructExtractInst:
124124
case ValueKind::TupleElementAddrInst:
125+
case ValueKind::BeginAccessInst:
125126
case ValueKind::UncheckedTakeEnumDataAddrInst:
126127
case ValueKind::UncheckedEnumDataInst:
127128
case ValueKind::MarkDependenceInst:

test/SILOptimizer/escape_analysis.sil

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1888,3 +1888,25 @@ bb0(%0 : @guaranteed $@sil_unowned Builtin.NativeObject):
18881888
%1 = strong_copy_unowned_value %0 : $@sil_unowned Builtin.NativeObject
18891889
return %1 : $Builtin.NativeObject
18901890
}
1891+
1892+
// Test begin_access. It should look like a derived pointer.
1893+
// CHECK-LABEL: CG of testAccessMarkerHelper
1894+
sil hidden @testAccessMarkerHelper : $@convention(thin) (@inout SomeData) -> () {
1895+
bb0(%0 : $*SomeData):
1896+
%1 = tuple ()
1897+
return %1 : $()
1898+
}
1899+
1900+
// CHECK-LABEL: CG of testAccessMarker
1901+
// CHECK-NEXT: Arg %0 Esc: A, Succ: (%0.1)
1902+
// CHECK-NEXT: Con [ref] %0.1 Esc: G, Succ:
1903+
// CHECK-LABEL: End
1904+
sil hidden @testAccessMarker : $@convention(thin) (@inout SomeData) -> () {
1905+
bb0(%0 : $*SomeData):
1906+
%1 = begin_access [modify] [static] %0 : $*SomeData
1907+
%2 = function_ref @testAccessMarkerHelper : $@convention(thin) (@inout SomeData) -> ()
1908+
%3 = apply %2(%1) : $@convention(thin) (@inout SomeData) -> ()
1909+
end_access %1 : $*SomeData
1910+
%5 = tuple ()
1911+
return %5 : $()
1912+
}

0 commit comments

Comments
 (0)