From 54779a1a385b97ae140c06f5ad0d74b09ca02dfa Mon Sep 17 00:00:00 2001 From: Michael Gottesman Date: Mon, 20 Jul 2020 14:41:53 -0700 Subject: [PATCH] [opt-remark] If we have a SIL remark streamer, always emit remarks. --- .../Transforms/OptRemarkGenerator.cpp | 5 ++- test/SILOptimizer/opt-remark-generator.swift | 40 +++++++++++++++++++ 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/lib/SILOptimizer/Transforms/OptRemarkGenerator.cpp b/lib/SILOptimizer/Transforms/OptRemarkGenerator.cpp index 70029cd8efe17..07546ab9ddb4e 100644 --- a/lib/SILOptimizer/Transforms/OptRemarkGenerator.cpp +++ b/lib/SILOptimizer/Transforms/OptRemarkGenerator.cpp @@ -101,8 +101,11 @@ class OptRemarkGenerator : public SILFunctionTransform { bool isOptRemarksEnabled() { // TODO: Put this on LangOpts as a helper. auto &langOpts = getFunction()->getASTContext().LangOpts; + + // If we have a remark streamer, emit everything. return bool(langOpts.OptimizationRemarkMissedPattern) || - bool(langOpts.OptimizationRemarkPassedPattern); + bool(langOpts.OptimizationRemarkPassedPattern) || + getFunction()->getModule().getSILRemarkStreamer(); } /// The entry point to the transformation. diff --git a/test/SILOptimizer/opt-remark-generator.swift b/test/SILOptimizer/opt-remark-generator.swift index 4c0f3555b54cf..baba0484e843b 100644 --- a/test/SILOptimizer/opt-remark-generator.swift +++ b/test/SILOptimizer/opt-remark-generator.swift @@ -1,5 +1,45 @@ // RUN: %target-swiftc_driver -O -Rpass-missed=sil-opt-remark-gen -Xllvm -sil-disable-pass=FunctionSignatureOpts -emit-sil %s -o /dev/null -Xfrontend -verify +// RUN: %empty-directory(%t) +// 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 + +// CHECK: --- !Missed +// CHECK-NEXT: Pass: sil-opt-remark-gen +// CHECK-NEXT: Name: sil.memory-management +// CHECK-NEXT: DebugLoc: { File: '{{.*}}opt-remark-generator.swift', +// CHECK-NEXT: Line: 49, Column: 5 } +// CHECK-NEXT: Function: 'getGlobal()' +// CHECK-NEXT: Args: +// CHECK-NEXT: - String: Unable to remove retain +// CHECK-NEXT: ... +// CHECK-NEXT: --- !Missed +// CHECK-NEXT: Pass: sil-opt-remark-gen +// CHECK-NEXT: Name: sil.memory-management +// CHECK-NEXT: DebugLoc: { File: '{{.*}}opt-remark-generator.swift', +// CHECK-NEXT: Line: 56, Column: 5 } +// CHECK-NEXT: Function: 'useGlobal()' +// CHECK-NEXT: Args: +// CHECK-NEXT: - String: Unable to remove retain +// CHECK-NEXT: ... +// CHECK-NEXT: --- !Missed +// CHECK-NEXT: Pass: sil-opt-remark-gen +// CHECK-NEXT: Name: sil.memory-management +// CHECK-NEXT: DebugLoc: { File: '{{.*}}opt-remark-generator.swift', +// CHECK-NEXT: Line: 56, Column: 12 } +// CHECK-NEXT: Function: 'useGlobal()' +// CHECK-NEXT: Args: +// CHECK-NEXT: - String: Unable to remove release +// CHECK-NEXT: ... +// CHECK-NEXT: --- !Missed +// CHECK-NEXT: Pass: sil-opt-remark-gen +// CHECK-NEXT: Name: sil.memory-management +// CHECK-NEXT: DebugLoc: { File: '{{.*}}opt-remark-generator.swift', +// CHECK-NEXT: Line: 56, Column: 12 } +// CHECK-NEXT: Function: 'useGlobal()' +// CHECK-NEXT: Args: +// CHECK-NEXT: - String: Unable to remove release +// CHECK-NEXT: ... + public class Klass {} public var global = Klass()