summaryrefslogtreecommitdiff
path: root/contrib/llvm/lib/CodeGen/MachineOptimizationRemarkEmitter.cpp
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2019-12-20 19:53:05 +0000
committerDimitry Andric <dim@FreeBSD.org>2019-12-20 19:53:05 +0000
commit0b57cec536236d46e3dba9bd041533462f33dbb7 (patch)
tree56229dbdbbf76d18580f72f789003db17246c8d9 /contrib/llvm/lib/CodeGen/MachineOptimizationRemarkEmitter.cpp
parent718ef55ec7785aae63f98f8ca05dc07ed399c16d (diff)
Notes
Diffstat (limited to 'contrib/llvm/lib/CodeGen/MachineOptimizationRemarkEmitter.cpp')
-rw-r--r--contrib/llvm/lib/CodeGen/MachineOptimizationRemarkEmitter.cpp98
1 files changed, 0 insertions, 98 deletions
diff --git a/contrib/llvm/lib/CodeGen/MachineOptimizationRemarkEmitter.cpp b/contrib/llvm/lib/CodeGen/MachineOptimizationRemarkEmitter.cpp
deleted file mode 100644
index 27db9106b337..000000000000
--- a/contrib/llvm/lib/CodeGen/MachineOptimizationRemarkEmitter.cpp
+++ /dev/null
@@ -1,98 +0,0 @@
-///===- MachineOptimizationRemarkEmitter.cpp - Opt Diagnostic -*- C++ -*---===//
-///
-/// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-/// See https://llvm.org/LICENSE.txt for license information.
-/// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-///
-///===---------------------------------------------------------------------===//
-/// \file
-/// Optimization diagnostic interfaces for machine passes. It's packaged as an
-/// analysis pass so that by using this service passes become dependent on MBFI
-/// as well. MBFI is used to compute the "hotness" of the diagnostic message.
-///
-///===---------------------------------------------------------------------===//
-
-#include "llvm/CodeGen/MachineOptimizationRemarkEmitter.h"
-#include "llvm/CodeGen/LazyMachineBlockFrequencyInfo.h"
-#include "llvm/CodeGen/MachineInstr.h"
-#include "llvm/IR/DiagnosticInfo.h"
-#include "llvm/IR/LLVMContext.h"
-
-using namespace llvm;
-
-DiagnosticInfoMIROptimization::MachineArgument::MachineArgument(
- StringRef MKey, const MachineInstr &MI)
- : Argument() {
- Key = MKey;
-
- raw_string_ostream OS(Val);
- MI.print(OS, /*IsStandalone=*/true, /*SkipOpers=*/false,
- /*SkipDebugLoc=*/true);
-}
-
-Optional<uint64_t>
-MachineOptimizationRemarkEmitter::computeHotness(const MachineBasicBlock &MBB) {
- if (!MBFI)
- return None;
-
- return MBFI->getBlockProfileCount(&MBB);
-}
-
-void MachineOptimizationRemarkEmitter::computeHotness(
- DiagnosticInfoMIROptimization &Remark) {
- const MachineBasicBlock *MBB = Remark.getBlock();
- if (MBB)
- Remark.setHotness(computeHotness(*MBB));
-}
-
-void MachineOptimizationRemarkEmitter::emit(
- DiagnosticInfoOptimizationBase &OptDiagCommon) {
- auto &OptDiag = cast<DiagnosticInfoMIROptimization>(OptDiagCommon);
- computeHotness(OptDiag);
-
- LLVMContext &Ctx = MF.getFunction().getContext();
-
- // Only emit it if its hotness meets the threshold.
- if (OptDiag.getHotness().getValueOr(0) <
- Ctx.getDiagnosticsHotnessThreshold()) {
- return;
- }
-
- Ctx.diagnose(OptDiag);
-}
-
-MachineOptimizationRemarkEmitterPass::MachineOptimizationRemarkEmitterPass()
- : MachineFunctionPass(ID) {
- initializeMachineOptimizationRemarkEmitterPassPass(
- *PassRegistry::getPassRegistry());
-}
-
-bool MachineOptimizationRemarkEmitterPass::runOnMachineFunction(
- MachineFunction &MF) {
- MachineBlockFrequencyInfo *MBFI;
-
- if (MF.getFunction().getContext().getDiagnosticsHotnessRequested())
- MBFI = &getAnalysis<LazyMachineBlockFrequencyInfoPass>().getBFI();
- else
- MBFI = nullptr;
-
- ORE = llvm::make_unique<MachineOptimizationRemarkEmitter>(MF, MBFI);
- return false;
-}
-
-void MachineOptimizationRemarkEmitterPass::getAnalysisUsage(
- AnalysisUsage &AU) const {
- AU.addRequired<LazyMachineBlockFrequencyInfoPass>();
- AU.setPreservesAll();
- MachineFunctionPass::getAnalysisUsage(AU);
-}
-
-char MachineOptimizationRemarkEmitterPass::ID = 0;
-static const char ore_name[] = "Machine Optimization Remark Emitter";
-#define ORE_NAME "machine-opt-remark-emitter"
-
-INITIALIZE_PASS_BEGIN(MachineOptimizationRemarkEmitterPass, ORE_NAME, ore_name,
- false, true)
-INITIALIZE_PASS_DEPENDENCY(LazyMachineBlockFrequencyInfoPass)
-INITIALIZE_PASS_END(MachineOptimizationRemarkEmitterPass, ORE_NAME, ore_name,
- false, true)