diff options
author | Brian Gesiak <modocache@gmail.com> | 2017-06-30 23:14:53 +0000 |
---|---|---|
committer | Brian Gesiak <modocache@gmail.com> | 2017-06-30 23:14:53 +0000 |
commit | 4ef3daafef7c53d03bd221a323d34ae2cd47d14d (patch) | |
tree | 4fad026658b6f904209da704a666f75f6a0ca41a /llvm/lib/CodeGen/MachineOptimizationRemarkEmitter.cpp | |
parent | 4fcfc19976c9abfb98008f67c973b99376580121 (diff) | |
download | llvm-4ef3daafef7c53d03bd221a323d34ae2cd47d14d.zip llvm-4ef3daafef7c53d03bd221a323d34ae2cd47d14d.tar.gz llvm-4ef3daafef7c53d03bd221a323d34ae2cd47d14d.tar.bz2 |
[ORE] Add diagnostics hotness threshold
Summary:
Add an option to prevent diagnostics that do not meet a minimum hotness
threshold from being output. When generating optimization remarks for
large codebases with a ton of cold code paths, this option can be used
to limit the optimization remark output at a reasonable size. Discussion of
this change can be read here:
http://lists.llvm.org/pipermail/llvm-dev/2017-June/114377.html
Reviewers: anemet, davidxl, hfinkel
Reviewed By: anemet
Subscribers: qcolombet, javed.absar, fhahn, eraman, llvm-commits
Differential Revision: https://reviews.llvm.org/D34867
llvm-svn: 306912
Diffstat (limited to 'llvm/lib/CodeGen/MachineOptimizationRemarkEmitter.cpp')
-rw-r--r-- | llvm/lib/CodeGen/MachineOptimizationRemarkEmitter.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/MachineOptimizationRemarkEmitter.cpp b/llvm/lib/CodeGen/MachineOptimizationRemarkEmitter.cpp index 957028f..73c3428a 100644 --- a/llvm/lib/CodeGen/MachineOptimizationRemarkEmitter.cpp +++ b/llvm/lib/CodeGen/MachineOptimizationRemarkEmitter.cpp @@ -52,6 +52,14 @@ void MachineOptimizationRemarkEmitter::emit( computeHotness(OptDiag); LLVMContext &Ctx = MF.getFunction()->getContext(); + + // If a diagnostic has a hotness value, then only emit it if its hotness + // meets the threshold. + if (OptDiag.getHotness() && + *OptDiag.getHotness() < Ctx.getDiagnosticsHotnessThreshold()) { + return; + } + yaml::Output *Out = Ctx.getDiagnosticsOutputFile(); if (Out) { auto *P = &const_cast<DiagnosticInfoOptimizationBase &>(OptDiagCommon); |