Skip to content

Commit 54779a1

Browse files
committed
[opt-remark] If we have a SIL remark streamer, always emit remarks.
1 parent 7a5f525 commit 54779a1

File tree

2 files changed

+44
-1
lines changed

2 files changed

+44
-1
lines changed

lib/SILOptimizer/Transforms/OptRemarkGenerator.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,8 +101,11 @@ class OptRemarkGenerator : public SILFunctionTransform {
101101
bool isOptRemarksEnabled() {
102102
// TODO: Put this on LangOpts as a helper.
103103
auto &langOpts = getFunction()->getASTContext().LangOpts;
104+
105+
// If we have a remark streamer, emit everything.
104106
return bool(langOpts.OptimizationRemarkMissedPattern) ||
105-
bool(langOpts.OptimizationRemarkPassedPattern);
107+
bool(langOpts.OptimizationRemarkPassedPattern) ||
108+
getFunction()->getModule().getSILRemarkStreamer();
106109
}
107110

108111
/// The entry point to the transformation.

test/SILOptimizer/opt-remark-generator.swift

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,45 @@
11
// RUN: %target-swiftc_driver -O -Rpass-missed=sil-opt-remark-gen -Xllvm -sil-disable-pass=FunctionSignatureOpts -emit-sil %s -o /dev/null -Xfrontend -verify
22

3+
// RUN: %empty-directory(%t)
4+
// RUN: %target-swiftc_driver -wmo -O -Xllvm -sil-disable-pass=FunctionSignatureOpts -emit-sil -save-optimization-record=yaml -save-optimization-record-path %t/note.yaml %s -o /dev/null && %FileCheck --input-file=%t/note.yaml %s
5+
6+
// CHECK: --- !Missed
7+
// CHECK-NEXT: Pass: sil-opt-remark-gen
8+
// CHECK-NEXT: Name: sil.memory-management
9+
// CHECK-NEXT: DebugLoc: { File: '{{.*}}opt-remark-generator.swift',
10+
// CHECK-NEXT: Line: 49, Column: 5 }
11+
// CHECK-NEXT: Function: 'getGlobal()'
12+
// CHECK-NEXT: Args:
13+
// CHECK-NEXT: - String: Unable to remove retain
14+
// CHECK-NEXT: ...
15+
// CHECK-NEXT: --- !Missed
16+
// CHECK-NEXT: Pass: sil-opt-remark-gen
17+
// CHECK-NEXT: Name: sil.memory-management
18+
// CHECK-NEXT: DebugLoc: { File: '{{.*}}opt-remark-generator.swift',
19+
// CHECK-NEXT: Line: 56, Column: 5 }
20+
// CHECK-NEXT: Function: 'useGlobal()'
21+
// CHECK-NEXT: Args:
22+
// CHECK-NEXT: - String: Unable to remove retain
23+
// CHECK-NEXT: ...
24+
// CHECK-NEXT: --- !Missed
25+
// CHECK-NEXT: Pass: sil-opt-remark-gen
26+
// CHECK-NEXT: Name: sil.memory-management
27+
// CHECK-NEXT: DebugLoc: { File: '{{.*}}opt-remark-generator.swift',
28+
// CHECK-NEXT: Line: 56, Column: 12 }
29+
// CHECK-NEXT: Function: 'useGlobal()'
30+
// CHECK-NEXT: Args:
31+
// CHECK-NEXT: - String: Unable to remove release
32+
// CHECK-NEXT: ...
33+
// CHECK-NEXT: --- !Missed
34+
// CHECK-NEXT: Pass: sil-opt-remark-gen
35+
// CHECK-NEXT: Name: sil.memory-management
36+
// CHECK-NEXT: DebugLoc: { File: '{{.*}}opt-remark-generator.swift',
37+
// CHECK-NEXT: Line: 56, Column: 12 }
38+
// CHECK-NEXT: Function: 'useGlobal()'
39+
// CHECK-NEXT: Args:
40+
// CHECK-NEXT: - String: Unable to remove release
41+
// CHECK-NEXT: ...
42+
343
public class Klass {}
444

545
public var global = Klass()

0 commit comments

Comments
 (0)