From 20fff32b7d1f1a1bd417b22aa9f26ededd97a3e5 Mon Sep 17 00:00:00 2001 From: Francis Visoiu Mistrih Date: Tue, 12 Mar 2019 20:28:50 +0000 Subject: [Remarks] Add -foptimization-record-passes to filter remark emission Currently we have -Rpass for filtering the remarks that are displayed as diagnostics, but when using -fsave-optimization-record, there is no way to filter the remarks while generating them. This adds support for filtering remarks by passes using a regex. Ex: `clang -fsave-optimization-record -foptimization-record-passes=inline` will only emit the remarks coming from the pass `inline`. This adds: * `-fsave-optimization-record` to the driver * `-opt-record-passes` to cc1 * `-lto-pass-remarks-filter` to the LTOCodeGenerator * `--opt-remarks-passes` to lld * `-pass-remarks-filter` to llc, opt, llvm-lto, llvm-lto2 * `-opt-remarks-passes` to gold-plugin Differential Revision: https://reviews.llvm.org/D59268 llvm-svn: 355964 --- llvm/tools/opt/opt.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'llvm/tools/opt/opt.cpp') diff --git a/llvm/tools/opt/opt.cpp b/llvm/tools/opt/opt.cpp index 06745b0cca0..b4c39e2fca8 100644 --- a/llvm/tools/opt/opt.cpp +++ b/llvm/tools/opt/opt.cpp @@ -275,6 +275,12 @@ static cl::opt cl::desc("YAML output filename for pass remarks"), cl::value_desc("filename")); +static cl::opt + RemarksPasses("pass-remarks-filter", + cl::desc("Only record optimization remarks from passes whose " + "names match the given regular expression"), + cl::value_desc("regex")); + cl::opt PGOKindFlag("pgo-kind", cl::init(NoPGO), cl::Hidden, cl::desc("The kind of profile guided optimization"), @@ -566,6 +572,12 @@ int main(int argc, char **argv) { } Context.setRemarkStreamer(llvm::make_unique( RemarksFilename, OptRemarkFile->os())); + + if (!RemarksPasses.empty()) + if (Error E = Context.getRemarkStreamer()->setFilter(RemarksPasses)) { + errs() << E << '\n'; + return 1; + } } // Load the input module... -- cgit v1.2.3