aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/MachineOptimizationRemarkEmitter.cpp
diff options
context:
space:
mode:
authorBrian Gesiak <modocache@gmail.com>2017-06-30 23:14:53 +0000
committerBrian Gesiak <modocache@gmail.com>2017-06-30 23:14:53 +0000
commit4ef3daafef7c53d03bd221a323d34ae2cd47d14d (patch)
tree4fad026658b6f904209da704a666f75f6a0ca41a /llvm/lib/CodeGen/MachineOptimizationRemarkEmitter.cpp
parent4fcfc19976c9abfb98008f67c973b99376580121 (diff)
downloadllvm-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.cpp8
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);