50static std::optional<remarks::RemarkLocation>
55 unsigned Line =
DL.getLine();
56 unsigned Col =
DL.getColumn();
72 for (
const DiagnosticInfoOptimizationBase::Argument &Arg : Diag.
getArgs()) {
73 R.Args.emplace_back();
74 R.Args.back().Key = Arg.Key;
75 R.Args.back().Val = Arg.Val;
89 RS.getSerializer().emit(R);
101 Context.setDiagnosticsHotnessRequested(
true);
116 if (std::error_code EC =
117 Context.getVirtualFileSystem().makeAbsolute(AbsRemarksFilename))
137 auto RS = std::make_unique<remarks::RemarkStreamer>(
142 RS->releaseSerializer();
148 Context.setMainRemarkStreamer(std::move(RS));
151 Context.setLLVMRemarkStreamer(
152 std::make_unique<LLVMRemarkStreamer>(*Context.getMainRemarkStreamer()));
157void LLVMRemarkFileHandle::Finalizer::finalize() {
169 Context.setDiagnosticsHotnessRequested(
true);
183 std::make_unique<remarks::RemarkStreamer>(std::move(*RemarkSerializer));
187 RS->releaseSerializer();
193 Context.setMainRemarkStreamer(std::move(RS));
196 Context.setLLVMRemarkStreamer(
197 std::make_unique<LLVMRemarkStreamer>(*Context.getMainRemarkStreamer()));
203 Context.setLLVMRemarkStreamer(
nullptr);
204 if (
auto *RS = Context.getMainRemarkStreamer()) {
205 RS->releaseSerializer();
206 Context.setMainRemarkStreamer(
nullptr);
MachineBasicBlock MachineBasicBlock::iterator DebugLoc DL
Defines the virtual file system interface vfs::FileSystem.
Common features for diagnostics dealing with optimization remarks that are used by both IR and MIR pa...
ArrayRef< Argument > getArgs() const
StringRef getPassName() const
StringRef getRemarkName() const
std::optional< uint64_t > getHotness() const
const Function & getFunction() const
void getLocation(StringRef &RelativePath, unsigned &Line, unsigned &Column) const
Return location information for this diagnostic in three parts: the relative source file path,...
Lightweight error class with error context and mandatory checking.
static ErrorSuccess success()
Create a success value.
Tagged union holding either a T or a Error.
Error takeError()
Take ownership of the stored error.
static StringRef dropLLVMManglingEscape(StringRef Name)
If the given string begins with the GlobalValue name mangling escape character '\1',...
This is an important class for using LLVM in a threaded context.
RAII handle that manages the lifetime of the ToolOutputFile used to output remarks.
SmallString - A SmallString is just a SmallVector with methods and accessors that make it work better...
Represent a constant reference to a string, i.e.
LLVM_ABI StringRef getName() const
Return a constant reference to the value's name.
This class implements an extremely fast bulk output stream that can only output to a stream.
@ OF_TextWithCRLF
The file should be opened in text mode and use a carriage linefeed '\r '.
This is an optimization pass for GlobalISel generic memory operations.
cl::opt< std::string > RemarksFormat("lto-pass-remarks-format", cl::desc("The format used for serializing remarks (default: YAML)"), cl::value_desc("format"), cl::init("yaml"))
LLVM_ABI Expected< LLVMRemarkFileHandle > setupLLVMOptimizationRemarks(LLVMContext &Context, StringRef RemarksFilename, StringRef RemarksPasses, StringRef RemarksFormat, bool RemarksWithHotness, std::optional< uint64_t > RemarksHotnessThreshold=0)
Set up optimization remarks that output to a file.
cl::opt< std::string > RemarksPasses("lto-pass-remarks-filter", cl::desc("Only record optimization remarks from passes whose " "names match the given regular expression"), cl::value_desc("regex"))
DiagnosticKind
Defines the different supported kind of a diagnostic.
@ DK_OptimizationRemarkAnalysis
@ DK_OptimizationRemarkAnalysisAliasing
@ DK_MachineOptimizationRemark
@ DK_OptimizationRemarkMissed
@ DK_MachineOptimizationRemarkAnalysis
@ DK_MachineOptimizationRemarkMissed
@ DK_OptimizationRemarkAnalysisFPCommute
cl::opt< bool > RemarksWithHotness("lto-pass-remarks-with-hotness", cl::desc("With PGO, include profile count in optimization remarks"), cl::Hidden)
cl::opt< std::string > RemarksFilename("lto-pass-remarks-output", cl::desc("Output filename for pass remarks"), cl::value_desc("filename"))
Error make_error(ArgTs &&... Args)
Make a Error instance representing failure using the given error info type.
cl::opt< std::optional< uint64_t >, false, remarks::HotnessThresholdParser > RemarksHotnessThreshold("lto-pass-remarks-hotness-threshold", cl::desc("Minimum profile count required for an " "optimization remark to be output." " Use 'auto' to apply the threshold from profile summary."), cl::value_desc("uint or 'auto'"), cl::init(0), cl::Hidden)
LLVM_ABI Error errorCodeToError(std::error_code EC)
Helper for converting an std::error_code to a Error.
LLVM_ABI void finalizeLLVMOptimizationRemarks(LLVMContext &Context)
Finalize optimization remarks and deregister the RemarkStreamer from the Context.