96 (llvm::Twine(categoryName) +
":" + subCategoryName)
97 .toStringRef(fullCategoryName);
112 Arg(llvm::StringRef k, llvm::StringRef v) :
key(k),
val(v) {}
113 Arg(llvm::StringRef k, std::string v) :
key(k),
val(std::move(v)) {}
114 Arg(llvm::StringRef k,
const char *v) :
Arg(k,
llvm::StringRef(v)) {}
116 Arg(llvm::StringRef k,
Type t);
118 Arg(llvm::StringRef k,
bool b) :
key(k),
val(
b ?
"true" :
"false") {}
127 template <
typename T,
typename = std::enable_if_t<std::is_arithmetic_v<T> &&
128 !std::is_same_v<T,
bool>>>
130 if constexpr (std::is_floating_point_v<T>) {
131 llvm::raw_string_ostream os(
val);
133 }
else if constexpr (std::is_signed_v<T>) {
134 val = llvm::itostr(
static_cast<long long>(v));
136 val = llvm::utostr(
static_cast<unsigned long long>(v));
141 void insert(llvm::StringRef s);
144 void print(llvm::raw_ostream &os,
bool printLocation =
false)
const;
153 return "<unknown function>";
170 return "<unknown remark name>";
174 std::string
getMsg()
const;
207 static llvm::DiagnosticSeverity
211 return llvm::DiagnosticSeverity::DS_Note;
213 return llvm::DiagnosticSeverity::DS_Warning;
215 return llvm::DiagnosticSeverity::DS_Error;
217 return llvm::DiagnosticSeverity::DS_Remark;
219 llvm_unreachable(
"Unknown diagnostic severity");
225 return llvm::DiagnosticKind::DK_Generic;
227 return llvm::DiagnosticKind::DK_OptimizationRemark;
229 return llvm::DiagnosticKind::DK_OptimizationRemarkMissed;
231 return llvm::DiagnosticKind::DK_OptimizationFailure;
233 return llvm::DiagnosticKind::DK_OptimizationRemarkAnalysis;
235 llvm_unreachable(
"Unknown diagnostic kind");
380 std::optional<llvm::Regex> missFilter;
382 std::optional<llvm::Regex> passedFilter;
384 std::optional<llvm::Regex> analysisFilter;
386 std::optional<llvm::Regex> failedFilter;
388 std::unique_ptr<MLIRRemarkStreamerBase> remarkStreamer;
390 std::unique_ptr<RemarkEmittingPolicyBase> remarkEmittingPolicy;
392 bool printAsEmitRemarks =
false;
396 bool isMissedOptRemarkEnabled(StringRef categoryName)
const;
400 bool isPassedOptRemarkEnabled(StringRef categoryName)
const;
404 bool isAnalysisOptRemarkEnabled(StringRef categoryName)
const;
408 bool isFailedOptRemarkEnabled(StringRef categoryName)
const;
411 bool isAnyRemarkEnabled(StringRef categoryName)
const {
412 return isMissedOptRemarkEnabled(categoryName) ||
413 isPassedOptRemarkEnabled(categoryName) ||
414 isFailedOptRemarkEnabled(categoryName) ||
415 isAnalysisOptRemarkEnabled(categoryName);
421 template <
typename RemarkT,
typename... Args>
424 template <
typename RemarkT>
446 initialize(std::unique_ptr<MLIRRemarkStreamerBase> streamer,
447 std::unique_ptr<RemarkEmittingPolicyBase> remarkEmittingPolicy,
448 std::string *errMsg);
452 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.