diff options
author | orivej <orivej@yandex-team.ru> | 2022-02-10 16:45:01 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:45:01 +0300 |
commit | 2d37894b1b037cf24231090eda8589bbb44fb6fc (patch) | |
tree | be835aa92c6248212e705f25388ebafcf84bc7a1 /contrib/libs/llvm12/lib/CodeGen/MachineOptimizationRemarkEmitter.cpp | |
parent | 718c552901d703c502ccbefdfc3c9028d608b947 (diff) | |
download | ydb-2d37894b1b037cf24231090eda8589bbb44fb6fc.tar.gz |
Restoring authorship annotation for <orivej@yandex-team.ru>. Commit 2 of 2.
Diffstat (limited to 'contrib/libs/llvm12/lib/CodeGen/MachineOptimizationRemarkEmitter.cpp')
-rw-r--r-- | contrib/libs/llvm12/lib/CodeGen/MachineOptimizationRemarkEmitter.cpp | 198 |
1 files changed, 99 insertions, 99 deletions
diff --git a/contrib/libs/llvm12/lib/CodeGen/MachineOptimizationRemarkEmitter.cpp b/contrib/libs/llvm12/lib/CodeGen/MachineOptimizationRemarkEmitter.cpp index 7a4163b996..dcb8e4073e 100644 --- a/contrib/libs/llvm12/lib/CodeGen/MachineOptimizationRemarkEmitter.cpp +++ b/contrib/libs/llvm12/lib/CodeGen/MachineOptimizationRemarkEmitter.cpp @@ -1,99 +1,99 @@ -///===- 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" -#include "llvm/InitializePasses.h" - -using namespace llvm; - -DiagnosticInfoMIROptimization::MachineArgument::MachineArgument( - StringRef MKey, const MachineInstr &MI) - : Argument() { - Key = std::string(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 = std::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) +///===- 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" +#include "llvm/InitializePasses.h" + +using namespace llvm; + +DiagnosticInfoMIROptimization::MachineArgument::MachineArgument( + StringRef MKey, const MachineInstr &MI) + : Argument() { + Key = std::string(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 = std::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) |