summaryrefslogtreecommitdiffstats
path: root/llvm/lib/IR/RemarkStreamer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/IR/RemarkStreamer.cpp')
-rw-r--r--llvm/lib/IR/RemarkStreamer.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/llvm/lib/IR/RemarkStreamer.cpp b/llvm/lib/IR/RemarkStreamer.cpp
index 0b983408e46..022c17d6722 100644
--- a/llvm/lib/IR/RemarkStreamer.cpp
+++ b/llvm/lib/IR/RemarkStreamer.cpp
@@ -21,7 +21,21 @@ RemarkStreamer::RemarkStreamer(StringRef Filename, raw_ostream &OS)
assert(!Filename.empty() && "This needs to be a real filename.");
}
+Error RemarkStreamer::setFilter(StringRef Filter) {
+ Regex R = Regex(Filter);
+ std::string RegexError;
+ if (!R.isValid(RegexError))
+ return createStringError(std::make_error_code(std::errc::invalid_argument),
+ RegexError.data());
+ PassFilter = std::move(R);
+ return Error::success();
+}
+
void RemarkStreamer::emit(const DiagnosticInfoOptimizationBase &Diag) {
+ if (Optional<Regex> &Filter = PassFilter)
+ if (!Filter->match(Diag.getPassName()))
+ return;
+
DiagnosticInfoOptimizationBase *DiagPtr =
const_cast<DiagnosticInfoOptimizationBase *>(&Diag);
YAMLOutput << DiagPtr;
OpenPOWER on IntegriCloud