diff --git a/lib/SILOptimizer/Transforms/AssemblyVisionRemarkGenerator.cpp b/lib/SILOptimizer/Transforms/AssemblyVisionRemarkGenerator.cpp index e30e0456e0142..d105f455c0093 100644 --- a/lib/SILOptimizer/Transforms/AssemblyVisionRemarkGenerator.cpp +++ b/lib/SILOptimizer/Transforms/AssemblyVisionRemarkGenerator.cpp @@ -56,6 +56,13 @@ static llvm::cl::opt DecllessDebugValueUseSILDebugInfo( "write SIL test cases for this pass"), llvm::cl::init(false)); +static llvm::cl::opt DiagnoseCopyDestroyAddr( + "assemblyvisionremarkgen-diagnose-copy-destroy-addr", llvm::cl::Hidden, + llvm::cl::desc( + "Emit opt remarks for copy_addr, destroy_addr instructions"), + llvm::cl::init(true)); + + //===----------------------------------------------------------------------===// // Value To Decl Inferrer //===----------------------------------------------------------------------===// @@ -568,6 +575,9 @@ struct AssemblyVisionRemarkGeneratorInstructionVisitor void AssemblyVisionRemarkGeneratorInstructionVisitor:: visitCopyAddrInst(CopyAddrInst *copy) { + if (!DiagnoseCopyDestroyAddr) + return; + ORE.emit([&]() { using namespace OptRemark; SmallVector inferredArgs; @@ -603,6 +613,9 @@ void AssemblyVisionRemarkGeneratorInstructionVisitor:: void AssemblyVisionRemarkGeneratorInstructionVisitor:: visitDestroyAddrInst(DestroyAddrInst *destroy) { + if (!DiagnoseCopyDestroyAddr) + return; + ORE.emit([&]() { using namespace OptRemark; SmallVector inferredArgs; diff --git a/test/SILOptimizer/assemblyvision_remark/cast_remarks.swift b/test/SILOptimizer/assemblyvision_remark/cast_remarks.swift index 6311a5d57d82c..811e7443b66bb 100644 --- a/test/SILOptimizer/assemblyvision_remark/cast_remarks.swift +++ b/test/SILOptimizer/assemblyvision_remark/cast_remarks.swift @@ -1,4 +1,4 @@ -// RUN: %target-swiftc_driver -O -Rpass-missed=sil-assembly-vision-remark-gen -Xfrontend -enable-copy-propagation=requested-passes-only -Xfrontend -enable-lexical-lifetimes=false -Xllvm -sil-disable-pass=FunctionSignatureOpts -emit-sil %s -o /dev/null -Xfrontend -verify +// RUN: %target-swiftc_driver -O -Xllvm -assemblyvisionremarkgen-diagnose-copy-destroy-addr=false -Rpass-missed=sil-assembly-vision-remark-gen -Xfrontend -enable-copy-propagation=requested-passes-only -Xfrontend -enable-lexical-lifetimes=false -Xllvm -sil-disable-pass=FunctionSignatureOpts -emit-sil %s -o /dev/null -Xfrontend -verify // REQUIRES: optimized_stdlib // REQUIRES: swift_stdlib_no_asserts diff --git a/test/SILOptimizer/assemblyvision_remark/cast_remarks_objc.swift b/test/SILOptimizer/assemblyvision_remark/cast_remarks_objc.swift index 39812ae8f0ab9..f2c3ade1152ef 100644 --- a/test/SILOptimizer/assemblyvision_remark/cast_remarks_objc.swift +++ b/test/SILOptimizer/assemblyvision_remark/cast_remarks_objc.swift @@ -1,4 +1,4 @@ -// RUN: %target-swiftc_driver -O -Rpass-missed=sil-assembly-vision-remark-gen -Xllvm -sil-disable-pass=FunctionSignatureOpts -emit-sil %s -o /dev/null -Xfrontend -verify +// RUN: %target-swiftc_driver -O -Xllvm -assemblyvisionremarkgen-diagnose-copy-destroy-addr=false -Rpass-missed=sil-assembly-vision-remark-gen -Xllvm -sil-disable-pass=FunctionSignatureOpts -emit-sil %s -o /dev/null -Xfrontend -verify // REQUIRES: objc_interop // REQUIRES: optimized_stdlib