Skip to content

Commit 7d5c566

Browse files
committed
---
yaml --- r: 349200 b: refs/heads/master-next c: 23a0422 h: refs/heads/master
1 parent 5b39f53 commit 7d5c566

File tree

4 files changed

+29
-22
lines changed

4 files changed

+29
-22
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
refs/heads/master: 3574c513bbc5578dd9346b4ea9ab5995c5927bb5
3-
refs/heads/master-next: c99f12ff40010c3266f68e07ba3612f0538053a1
3+
refs/heads/master-next: 23a042207fd86a3462ef36bd3f3497eb8cef2a55
44
refs/tags/osx-passed: b6b74147ef8a386f532cf9357a1bde006e552c54
55
refs/tags/swift-2.2-SNAPSHOT-2015-12-01-a: 6bb18e013c2284f2b45f5f84f2df2887dc0f7dea
66
refs/tags/swift-2.2-SNAPSHOT-2015-12-01-b: 66d897bfcf64a82cb9a87f5e663d889189d06d07

branches/master-next/include/swift/SILOptimizer/Analysis/CallerAnalysis.h

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -278,6 +278,10 @@ class CallerAnalysis::FunctionInfo {
278278
/// visibility of a protocol conformance or class.
279279
bool mayHaveIndirectCallers : 1;
280280

281+
/// Whether the function is sufficiently visible to be called by a different
282+
/// module.
283+
bool mayHaveExternalCallers : 1;
284+
281285
public:
282286
FunctionInfo(SILFunction *f);
283287

@@ -289,7 +293,8 @@ class CallerAnalysis::FunctionInfo {
289293
/// function (e.g. a specialized function) without needing to introduce a
290294
/// thunk since we can rewrite all of the callers to call the new function.
291295
bool foundAllCallers() const {
292-
return hasOnlyCompleteDirectCallerSets() && !mayHaveIndirectCallers;
296+
return hasOnlyCompleteDirectCallerSets() && !mayHaveIndirectCallers &&
297+
!mayHaveExternalCallers;
293298
}
294299

295300
/// Returns true if this function has at least one direct caller.

branches/master-next/lib/SILOptimizer/Analysis/CallerAnalysis.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,9 @@ CallerAnalysis::FunctionInfo::FunctionInfo(SILFunction *f)
3333
// TODO: Make this more aggressive by considering
3434
// final/visibility/etc.
3535
mayHaveIndirectCallers(f->getDynamicallyReplacedFunction() ||
36-
canBeCalledIndirectly(f->getRepresentation())) {}
36+
canBeCalledIndirectly(f->getRepresentation())),
37+
mayHaveExternalCallers(f->isPossiblyUsedExternally() ||
38+
f->isAvailableExternally()) {}
3739

3840
//===----------------------------------------------------------------------===//
3941
// CallerAnalysis::ApplySiteFinderVisitor

branches/master-next/test/SILOptimizer/caller_analysis.sil

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import Builtin
1212
// CHECK-NEXT: partialAppliers:
1313
// CHECK-NEXT: fullAppliers:
1414
// CHECK-NEXT: ...
15-
sil hidden @dead_func : $@convention(thin) () -> () {
15+
sil private @dead_func : $@convention(thin) () -> () {
1616
%2 = tuple ()
1717
return %2 : $()
1818
}
@@ -25,7 +25,7 @@ sil hidden @dead_func : $@convention(thin) () -> () {
2525
// CHECK-NEXT: partialAppliers:
2626
// CHECK-NEXT: fullAppliers:
2727
// CHECK-NEXT: ...
28-
sil hidden @call_top : $@convention(thin) () -> () {
28+
sil private @call_top : $@convention(thin) () -> () {
2929
bb0:
3030
%0 = function_ref @call_middle : $@convention(thin) () -> ()
3131
%1 = apply %0() : $@convention(thin) () -> ()
@@ -42,7 +42,7 @@ bb0:
4242
// CHECK-NEXT: fullAppliers:
4343
// CHECK-NEXT: - call_top
4444
// CHECK-NEXT: ...
45-
sil hidden @call_middle : $@convention(thin) () -> () {
45+
sil private @call_middle : $@convention(thin) () -> () {
4646
bb0:
4747
%0 = function_ref @call_bottom : $@convention(thin) () -> ()
4848
%1 = apply %0() : $@convention(thin) () -> ()
@@ -59,7 +59,7 @@ bb0:
5959
// CHECK-NEXT: fullAppliers:
6060
// CHECK-NEXT: - call_middle
6161
// CHECK-NEXT: ...
62-
sil hidden @call_bottom : $@convention(thin) () -> () {
62+
sil private @call_bottom : $@convention(thin) () -> () {
6363
bb0:
6464
%0 = tuple ()
6565
return %0 : $()
@@ -74,7 +74,7 @@ bb0:
7474
// CHECK-NEXT: fullAppliers:
7575
// CHECK-NEXT: - self_recursive_func
7676
// CHECK-NEXT: ...
77-
sil hidden @self_recursive_func : $@convention(thin) () -> () {
77+
sil private @self_recursive_func : $@convention(thin) () -> () {
7878
bb0:
7979
%0 = function_ref @self_recursive_func : $@convention(thin) () -> ()
8080
%1 = apply %0() : $@convention(thin) () -> ()
@@ -91,7 +91,7 @@ bb0:
9191
// CHECK-NEXT: fullAppliers:
9292
// CHECK-NEXT: - mutual_recursive_func2
9393
// CHECK-NEXT: ...
94-
sil hidden @mutual_recursive_func1 : $@convention(thin) () -> () {
94+
sil private @mutual_recursive_func1 : $@convention(thin) () -> () {
9595
bb0:
9696
%0 = function_ref @mutual_recursive_func2 : $@convention(thin) () -> ()
9797
%1 = apply %0() : $@convention(thin) () -> ()
@@ -108,7 +108,7 @@ bb0:
108108
// CHECK-NEXT: fullAppliers:
109109
// CHECK-NEXT: - mutual_recursive_func1
110110
// CHECK-NEXT: ...
111-
sil hidden @mutual_recursive_func2 : $@convention(thin) () -> () {
111+
sil private @mutual_recursive_func2 : $@convention(thin) () -> () {
112112
bb0:
113113
%0 = function_ref @mutual_recursive_func1 : $@convention(thin) () -> ()
114114
%1 = apply %0() : $@convention(thin) () -> ()
@@ -125,7 +125,7 @@ bb0:
125125
// CHECK-NEXT: fullAppliers:
126126
// CHECK-NEXT: - multi_calles
127127
// CHECK-NEXT: ...
128-
sil hidden @multi_called : $@convention(thin) () -> () {
128+
sil private @multi_called : $@convention(thin) () -> () {
129129
bb0:
130130
%2 = tuple ()
131131
return %2 : $()
@@ -139,7 +139,7 @@ bb0:
139139
// CHECK-NEXT: partialAppliers:
140140
// CHECK-NEXT: fullAppliers:
141141
// CHECK-NEXT: ...
142-
sil hidden @multi_calles : $@convention(thin) () -> () {
142+
sil private @multi_calles : $@convention(thin) () -> () {
143143
bb0:
144144
%0 = function_ref @multi_called : $@convention(thin) () -> ()
145145
%1 = apply %0() : $@convention(thin) () -> ()
@@ -165,7 +165,7 @@ bb3:
165165
// CHECK-NEXT: - multi_caller1
166166
// CHECK-NEXT: - multi_caller2
167167
// CHECK-NEXT: ...
168-
sil hidden @multi_callers : $@convention(thin) () -> () {
168+
sil private @multi_callers : $@convention(thin) () -> () {
169169
bb0:
170170
%2 = tuple ()
171171
return %2 : $()
@@ -179,7 +179,7 @@ bb0:
179179
// CHECK-NEXT: partialAppliers:
180180
// CHECK-NEXT: fullAppliers:
181181
// CHECK-NEXT: ...
182-
sil hidden @multi_caller1 : $@convention(thin) () -> () {
182+
sil private @multi_caller1 : $@convention(thin) () -> () {
183183
bb0:
184184
%0 = function_ref @multi_callers : $@convention(thin) () -> ()
185185
%1 = apply %0() : $@convention(thin) () -> ()
@@ -195,7 +195,7 @@ bb0:
195195
// CHECK-NEXT: partialAppliers:
196196
// CHECK-NEXT: fullAppliers:
197197
// CHECK-NEXT: ...
198-
sil hidden @multi_caller2 : $@convention(thin) () -> () {
198+
sil private @multi_caller2 : $@convention(thin) () -> () {
199199
bb0:
200200
%0 = function_ref @multi_callers : $@convention(thin) () -> ()
201201
%1 = apply %0() : $@convention(thin) () -> ()
@@ -243,7 +243,7 @@ bb0(%0 : $Builtin.Int32, %1 : $Builtin.Int32):
243243
// CHECK-NEXT: partialAppliers:
244244
// CHECK-NEXT: fullAppliers:
245245
// CHECK-NEXT: ...
246-
sil @partial_apply_one_arg : $@convention(thin) (Builtin.Int32) -> @owned @callee_owned (Builtin.Int32) -> Builtin.Int32 {
246+
sil private @partial_apply_one_arg : $@convention(thin) (Builtin.Int32) -> @owned @callee_owned (Builtin.Int32) -> Builtin.Int32 {
247247
bb0(%0 : $Builtin.Int32):
248248
%1 = function_ref @closure1 : $@convention(thin) (Builtin.Int32, Builtin.Int32) -> Builtin.Int32
249249
%2 = partial_apply %1(%0) : $@convention(thin) (Builtin.Int32, Builtin.Int32) -> Builtin.Int32
@@ -258,7 +258,7 @@ bb0(%0 : $Builtin.Int32):
258258
// CHECK-NEXT: partialAppliers:
259259
// CHECK-NEXT: fullAppliers:
260260
// CHECK-NEXT: ...
261-
sil @partial_apply_two_args1 : $@convention(thin) (Builtin.Int32) -> @owned @callee_owned () -> Builtin.Int32 {
261+
sil private @partial_apply_two_args1 : $@convention(thin) (Builtin.Int32) -> @owned @callee_owned () -> Builtin.Int32 {
262262
bb0(%0 : $Builtin.Int32):
263263
%1 = function_ref @closure1 : $@convention(thin) (Builtin.Int32, Builtin.Int32) -> Builtin.Int32
264264
%2 = partial_apply %1(%0, %0) : $@convention(thin) (Builtin.Int32, Builtin.Int32) -> Builtin.Int32
@@ -273,7 +273,7 @@ bb0(%0 : $Builtin.Int32):
273273
// CHECK-NEXT: partialAppliers:
274274
// CHECK-NEXT: fullAppliers:
275275
// CHECK-NEXT: ...
276-
sil @partial_apply_two_args2 : $@convention(thin) (Builtin.Int32) -> @owned @callee_owned () -> Builtin.Int32 {
276+
sil private @partial_apply_two_args2 : $@convention(thin) (Builtin.Int32) -> @owned @callee_owned () -> Builtin.Int32 {
277277
bb0(%0 : $Builtin.Int32):
278278
%1 = function_ref @closure2 : $@convention(thin) (Builtin.Int32, Builtin.Int32) -> Builtin.Int32
279279
%2 = partial_apply %1(%0, %0) : $@convention(thin) (Builtin.Int32, Builtin.Int32) -> Builtin.Int32
@@ -290,7 +290,7 @@ bb0(%0 : $Builtin.Int32):
290290
// CHECK-NEXT: fullAppliers:
291291
// CHECK-NEXT: - partial_apply_that_is_applied
292292
// CHECK-NEXT: ...
293-
sil @called_closure : $@convention(thin) (Builtin.Int32, Builtin.Int32) -> Builtin.Int32 {
293+
sil private @called_closure : $@convention(thin) (Builtin.Int32, Builtin.Int32) -> Builtin.Int32 {
294294
bb0(%0 : $Builtin.Int32, %1 : $Builtin.Int32):
295295
return %0 : $Builtin.Int32
296296
}
@@ -317,7 +317,7 @@ bb0(%0 : $Builtin.Int32):
317317
// CHECK-NEXT: fullAppliers:
318318
// CHECK-NEXT: - partial_apply_that_is_applied
319319
// CHECK-NEXT: ...
320-
sil @called_closure_then_destroy : $@convention(thin) (Builtin.Int32, Builtin.Int32) -> Builtin.Int32 {
320+
sil private @called_closure_then_destroy : $@convention(thin) (Builtin.Int32, Builtin.Int32) -> Builtin.Int32 {
321321
bb0(%0 : $Builtin.Int32, %1 : $Builtin.Int32):
322322
return %0 : $Builtin.Int32
323323
}
@@ -367,7 +367,7 @@ bb0(%0 : $Builtin.Int32):
367367
// CHECK-NEXT: fullAppliers:
368368
// CHECK-NEXT: - partial_apply_that_is_applied
369369
// CHECK-NEXT: ...
370-
sil @called_closure_then_copy_destroy : $@convention(thin) (Builtin.Int32, Builtin.Int32) -> Builtin.Int32 {
370+
sil private @called_closure_then_copy_destroy : $@convention(thin) (Builtin.Int32, Builtin.Int32) -> Builtin.Int32 {
371371
bb0(%0 : $Builtin.Int32, %1 : $Builtin.Int32):
372372
return %0 : $Builtin.Int32
373373
}
@@ -414,7 +414,7 @@ bb0(%0 : $Builtin.Int32, %1 : $Builtin.Int32):
414414
// CHECK-NEXT: - partial_apply_that_is_applied_and_passed_noescape
415415
// CHECK-NEXT: - thin_to_thick_is_applied_and_passed_noescape
416416
// CHECK-NEXT: ...
417-
sil @noescape_caller : $@convention(thin) (@noescape @callee_owned () -> Builtin.Int32) -> () {
417+
sil private @noescape_caller : $@convention(thin) (@noescape @callee_owned () -> Builtin.Int32) -> () {
418418
bb0(%0 : $@noescape @callee_owned () -> Builtin.Int32):
419419
%1 = apply %0() : $@noescape @callee_owned () -> Builtin.Int32
420420
%9999 = tuple()

0 commit comments

Comments
 (0)