diff options
Diffstat (limited to 'llvm/lib/IR')
-rw-r--r-- | llvm/lib/IR/RemarkStreamer.cpp | 14 |
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; |