================ @@ -82,20 +82,26 @@ struct LLVMRemarkSetupFormatError LLVMRemarkSetupFormatError>::LLVMRemarkSetupErrorInfo; }; -/// Setup optimization remarks that output to a file. +/// Setup optimization remarks that output to a file. The returned +/// ToolOutputFile must be kept open for writing until +/// \ref finalizeLLVMOptimizationRemarks() is called. LLVM_ABI Expected<std::unique_ptr<ToolOutputFile>> setupLLVMOptimizationRemarks( LLVMContext &Context, StringRef RemarksFilename, StringRef RemarksPasses, StringRef RemarksFormat, bool RemarksWithHotness, std::optional<uint64_t> RemarksHotnessThreshold = 0); /// Setup optimization remarks that output directly to a raw_ostream. -/// \p OS is managed by the caller and should be open for writing as long as \p -/// Context is streaming remarks to it. +/// \p OS is managed by the caller and must be open for writing until +/// \ref finalizeLLVMOptimizationRemarks() is called. LLVM_ABI Error setupLLVMOptimizationRemarks( LLVMContext &Context, raw_ostream &OS, StringRef RemarksPasses, StringRef RemarksFormat, bool RemarksWithHotness, std::optional<uint64_t> RemarksHotnessThreshold = 0); +/// Finalize optimization remarks. This must be called before closing the +/// (file) stream that was used to setup the remarks. +LLVM_ABI void finalizeLLVMOptimizationRemarks(LLVMContext &Context); ---------------- jroelofs wrote:
Does the "resource" that this closes out have the same lifetime as the `ToolOutputFile`? If so, maybe this API could be simplified by moving this finalization into a subclass's dtor.... then you can't forget it. https://github.com/llvm/llvm-project/pull/156715 _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits