Skip to content

Commit 40afb68

Browse files
committed
Remove internal references to "*_no_escaping_closure" semantics.
This @_semantics string is buried in the compiler but it is completely undocumented and has no in-tree uses.
1 parent 3128eae commit 40afb68

File tree

2 files changed

+0
-75
lines changed

2 files changed

+0
-75
lines changed

lib/SILOptimizer/Analysis/EscapeAnalysis.cpp

Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -2024,36 +2024,6 @@ void EscapeAnalysis::analyzeInstruction(SILInstruction *I,
20242024
break;
20252025
}
20262026

2027-
if (FAS.getReferencedFunctionOrNull() &&
2028-
FAS.getReferencedFunctionOrNull()->hasSemanticsAttr(
2029-
"self_no_escaping_closure") &&
2030-
((FAS.hasIndirectSILResults() && FAS.getNumArguments() == 3) ||
2031-
(!FAS.hasIndirectSILResults() && FAS.getNumArguments() == 2)) &&
2032-
FAS.hasSelfArgument()) {
2033-
// The programmer has guaranteed that the closure will not capture the
2034-
// self pointer passed to it or anything that is transitively reachable
2035-
// from the pointer.
2036-
auto Args = FAS.getArgumentsWithoutIndirectResults();
2037-
// The first not indirect result argument is the closure.
2038-
ConGraph->setEscapesGlobal(Args[0]);
2039-
return;
2040-
}
2041-
2042-
if (FAS.getReferencedFunctionOrNull() &&
2043-
FAS.getReferencedFunctionOrNull()->hasSemanticsAttr(
2044-
"pair_no_escaping_closure") &&
2045-
((FAS.hasIndirectSILResults() && FAS.getNumArguments() == 4) ||
2046-
(!FAS.hasIndirectSILResults() && FAS.getNumArguments() == 3)) &&
2047-
FAS.hasSelfArgument()) {
2048-
// The programmer has guaranteed that the closure will not capture the
2049-
// self pointer passed to it or anything that is transitively reachable
2050-
// from the pointer.
2051-
auto Args = FAS.getArgumentsWithoutIndirectResults();
2052-
// The second not indirect result argument is the closure.
2053-
ConGraph->setEscapesGlobal(Args[1]);
2054-
return;
2055-
}
2056-
20572027
if (RecursionDepth < MaxRecursionDepth) {
20582028
CalleeList Callees = BCA->getCalleeList(FAS);
20592029
if (buildConnectionGraphForCallees(FAS.getInstruction(), Callees, FInfo,

test/SILOptimizer/escape_analysis.sil

Lines changed: 0 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1363,56 +1363,11 @@ sil [_semantics "array.get_element_address"] @get_element_address : $@convention
13631363
sil [_semantics "array.get_count"] @get_count : $@convention(method) (@guaranteed Array<X>) -> Int32
13641364
sil [_semantics "array.get_capacity"] @get_capacity : $@convention(method) (@guaranteed Array<X>) -> Int32
13651365

1366-
sil [_semantics "pair_no_escaping_closure"] @unsafeWithNotEscapedSelfPointerPair : $@convention(method) (@owned X, @owned @callee_owned (X, X) -> (@out X, @error Error), @guaranteed X) -> (@out X, @error Error)
1367-
sil [_semantics "self_no_escaping_closure"] @unsafeWithNotEscapedSelfPointer: $@convention(method) (@owned @callee_owned (X, X) -> (@out X, @error Error), @guaranteed X) -> (@out X, @error Error)
13681366
sil [_semantics "array.uninitialized"] @createUninitialized : $@convention(method) (@owned AnyObject) -> (@owned Array<X>, UnsafeMutablePointer<X>)
13691367

13701368
// A simplified version of swift_bufferAllocate
13711369
sil @swift_bufferAllocate : $@convention(thin) () -> @owned AnyObject
13721370

1373-
// CHECK-LABEL: CG of semantics_pair_no_escaping_closure
1374-
// CHECK-NEXT: Arg [ref] %0 Esc: A, Succ:
1375-
// CHECK-NEXT: Con [int] %0.1 Esc: A, Succ: (%0.2)
1376-
// CHECK-NEXT: Con [ref] %0.2 Esc: A, Succ:
1377-
// CHECK-NEXT: Arg [ref] %1 Esc: A, Succ:
1378-
// CHECK-NEXT: Con [int] %1.1 Esc: A, Succ: (%1.2)
1379-
// CHECK-NEXT: Con [ref] %1.2 Esc: A, Succ:
1380-
// CHECK-NEXT: Arg [ref] %2 Esc: A, Succ: (%2.1)
1381-
// CHECK-NEXT: Con [int] %2.1 Esc: G, Succ: (%2.2)
1382-
// CHECK-NEXT: Con %2.2 Esc: G, Succ:
1383-
// CHECK-NEXT: Val %4 Esc: , Succ: (%4.1)
1384-
// CHECK-NEXT: Con [ref] %4.1 Esc: %5, Succ:
1385-
// CHECK-NEXT: End
1386-
sil @semantics_pair_no_escaping_closure : $@convention(thin) (@owned X, @guaranteed X, @owned @callee_owned (X, X) -> (@out X, @error Error)) -> () {
1387-
bb(%0 : $X, %1 : $X, %2: $@callee_owned (X, X) -> (@out X, @error Error)):
1388-
%3 = function_ref @unsafeWithNotEscapedSelfPointerPair : $@convention(method) (@owned X, @owned @callee_owned (X, X) -> (@out X, @error Error), @guaranteed X) -> (@out X, @error Error)
1389-
%4 = alloc_stack $X
1390-
%6 = apply [nothrow] %3(%4, %0, %2, %1) : $@convention(method) (@owned X, @owned @callee_owned (X, X) -> (@out X, @error Error), @guaranteed X) -> (@out X, @error Error)
1391-
dealloc_stack %4 : $*X
1392-
%7 = tuple()
1393-
return %7 : $()
1394-
}
1395-
1396-
// CHECK-LABEL: CG of semantics_self_no_escaping_closure
1397-
// CHECK-NEXT: Arg [ref] %0 Esc: A, Succ:
1398-
// CHECK-NEXT: Con [int] %0.1 Esc: A, Succ: (%0.2)
1399-
// CHECK-NEXT: Con [ref] %0.2 Esc: A, Succ:
1400-
// CHECK-NEXT: Arg [ref] %1 Esc: A, Succ: (%1.1)
1401-
// CHECK-NEXT: Con [int] %1.1 Esc: G, Succ: (%1.2)
1402-
// CHECK-NEXT: Con %1.2 Esc: G, Succ:
1403-
// CHECK-NEXT: Val %3 Esc: , Succ:
1404-
// CHECK-NEXT: Con [ref] %3.1 Esc: %4, Succ:
1405-
// CHECK-NEXT: End
1406-
sil @semantics_self_no_escaping_closure : $@convention(thin) (@guaranteed X, @owned @callee_owned (X, X) -> (@out X, @error Error)) -> () {
1407-
bb(%0 : $X, %1: $@callee_owned (X, X) -> (@out X, @error Error)):
1408-
%2 = function_ref @unsafeWithNotEscapedSelfPointer : $@convention(method) (@owned @callee_owned (X, X) -> (@out X, @error Error), @guaranteed X) -> (@out X, @error Error)
1409-
%3 = alloc_stack $X
1410-
%6 = apply [nothrow] %2(%3, %1, %0) : $@convention(method) (@owned @callee_owned (X, X) -> (@out X, @error Error), @guaranteed X) -> (@out X, @error Error)
1411-
dealloc_stack %3 : $*X
1412-
%7 = tuple()
1413-
return %7 : $()
1414-
}
1415-
14161371
// CHECK-LABEL: CG of check_dealloc_ref
14171372
// CHECK-NEXT: Arg [ref] %0 Esc: A, Succ:
14181373
// CHECK-NEXT: End

0 commit comments

Comments
 (0)