96 (llvm::Twine(categoryName) +
":" + subCategoryName)
97 .toStringRef(fullCategoryName);
107 Arg(llvm::StringRef k, llvm::StringRef v) :
key(k),
val(v) {}
108 Arg(llvm::StringRef k, std::string v) :
key(k),
val(std::move(v)) {}
109 Arg(llvm::StringRef k,
const char *v) :
Arg(k,
llvm::StringRef(v)) {}
111 Arg(llvm::StringRef k,
Type t);
112 Arg(llvm::StringRef k,
bool b) :
key(k),
val(
b ?
"true" :
"false") {}
115 template <
typename T,
typename = std::enable_if_t<std::is_arithmetic_v<T> &&
116 !std::is_same_v<T,
bool>>>
118 if constexpr (std::is_floating_point_v<T>) {
119 llvm::raw_string_ostream os(
val);
121 }
else if constexpr (std::is_signed_v<T>) {
122 val = llvm::itostr(
static_cast<long long>(v));
124 val = llvm::utostr(
static_cast<unsigned long long>(v));
129 void insert(llvm::StringRef s);
132 void print(llvm::raw_ostream &os,
bool printLocation =
false)
const;
141 return "<unknown function>";
158 return "<unknown remark name>";
162 std::string
getMsg()
const;
195 static llvm::DiagnosticSeverity
199 return llvm::DiagnosticSeverity::DS_Note;
201 return llvm::DiagnosticSeverity::DS_Warning;
203 return llvm::DiagnosticSeverity::DS_Error;
205 return llvm::DiagnosticSeverity::DS_Remark;
207 llvm_unreachable(
"Unknown diagnostic severity");
213 return llvm::DiagnosticKind::DK_Generic;
215 return llvm::DiagnosticKind::DK_OptimizationRemark;
217 return llvm::DiagnosticKind::DK_OptimizationRemarkMissed;
219 return llvm::DiagnosticKind::DK_OptimizationFailure;
221 return llvm::DiagnosticKind::DK_OptimizationRemarkAnalysis;
223 llvm_unreachable(
"Unknown diagnostic kind");
368 std::optional<llvm::Regex> missFilter;
370 std::optional<llvm::Regex> passedFilter;
372 std::optional<llvm::Regex> analysisFilter;
374 std::optional<llvm::Regex> failedFilter;
376 std::unique_ptr<MLIRRemarkStreamerBase> remarkStreamer;
378 std::unique_ptr<RemarkEmittingPolicyBase> remarkEmittingPolicy;
380 bool printAsEmitRemarks =
false;
384 bool isMissedOptRemarkEnabled(StringRef categoryName)
const;
388 bool isPassedOptRemarkEnabled(StringRef categoryName)
const;
392 bool isAnalysisOptRemarkEnabled(StringRef categoryName)
const;
396 bool isFailedOptRemarkEnabled(StringRef categoryName)
const;
399 bool isAnyRemarkEnabled(StringRef categoryName)
const {
400 return isMissedOptRemarkEnabled(categoryName) ||
401 isPassedOptRemarkEnabled(categoryName) ||
402 isFailedOptRemarkEnabled(categoryName) ||
403 isAnalysisOptRemarkEnabled(categoryName);
409 template <
typename RemarkT,
typename... Args>
412 template <
typename RemarkT>
434 initialize(std::unique_ptr<MLIRRemarkStreamerBase> streamer,
435 std::unique_ptr<RemarkEmittingPolicyBase> remarkEmittingPolicy,
436 std::string *errMsg);
440 return remarkEmittingPolicy.get();
MLIRContext is the top-level object for a collection of MLIR operations.
remark::detail::RemarkEngine * getRemarkEngine()
Returns the remark engine for this context, or nullptr if none has been set.