diff options
author | Adam Nemet <anemet@apple.com> | 2017-01-25 23:20:25 +0000 |
---|---|---|
committer | Adam Nemet <anemet@apple.com> | 2017-01-25 23:20:25 +0000 |
commit | 484f93db30367766642f6688c841497bec8bf42d (patch) | |
tree | 98d0c8f5fe1e27623a3351b23a9752e22c81c53f /llvm/lib | |
parent | cb904604c9732628b0f42fdf55b1b8d2ed9569f5 (diff) | |
download | bcm5719-llvm-484f93db30367766642f6688c841497bec8bf42d.tar.gz bcm5719-llvm-484f93db30367766642f6688c841497bec8bf42d.zip |
[OptDiag] Split code region out of DiagnosticInfoOptimizationBase
Code region is the only part of this class that is IR-specific. Code
region is moved down in the inheritance tree to a new derived class,
called DiagnosticInfoIROptimization.
All the existing remarks are derived from this new class now.
This allows the new MIR pass-remark classes to be derived from
DiagnosticInfoOptimizationBase.
Also because we keep the name DiagnosticInfoOptimizationBase, the clang
parts don't need any adjustment.
Differential Revision: https://reviews.llvm.org/D29003
llvm-svn: 293109
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/Analysis/OptimizationDiagnosticInfo.cpp | 8 | ||||
-rw-r--r-- | llvm/lib/IR/DiagnosticInfo.cpp | 35 |
2 files changed, 22 insertions, 21 deletions
diff --git a/llvm/lib/Analysis/OptimizationDiagnosticInfo.cpp b/llvm/lib/Analysis/OptimizationDiagnosticInfo.cpp index da4e11d4303..5507beff0e8 100644 --- a/llvm/lib/Analysis/OptimizationDiagnosticInfo.cpp +++ b/llvm/lib/Analysis/OptimizationDiagnosticInfo.cpp @@ -139,18 +139,20 @@ template <> struct MappingTraits<DiagnosticInfoOptimizationBase::Argument> { LLVM_YAML_IS_SEQUENCE_VECTOR(DiagnosticInfoOptimizationBase::Argument) void OptimizationRemarkEmitter::computeHotness( - DiagnosticInfoOptimizationBase &OptDiag) { + DiagnosticInfoIROptimization &OptDiag) { Value *V = OptDiag.getCodeRegion(); if (V) OptDiag.setHotness(computeHotness(V)); } -void OptimizationRemarkEmitter::emit(DiagnosticInfoOptimizationBase &OptDiag) { +void OptimizationRemarkEmitter::emit( + DiagnosticInfoOptimizationBase &OptDiagBase) { + auto &OptDiag = cast<DiagnosticInfoIROptimization>(OptDiagBase); computeHotness(OptDiag); yaml::Output *Out = F->getContext().getDiagnosticsOutputFile(); if (Out) { - auto *P = &const_cast<DiagnosticInfoOptimizationBase &>(OptDiag); + auto *P = const_cast<DiagnosticInfoOptimizationBase *>(&OptDiagBase); *Out << P; } // FIXME: now that IsVerbose is part of DI, filtering for this will be moved diff --git a/llvm/lib/IR/DiagnosticInfo.cpp b/llvm/lib/IR/DiagnosticInfo.cpp index ea71fde26e0..a13e3f73456 100644 --- a/llvm/lib/IR/DiagnosticInfo.cpp +++ b/llvm/lib/IR/DiagnosticInfo.cpp @@ -212,16 +212,15 @@ void DiagnosticInfoOptimizationBase::print(DiagnosticPrinter &DP) const { OptimizationRemark::OptimizationRemark(const char *PassName, StringRef RemarkName, const DebugLoc &DLoc, Value *CodeRegion) - : DiagnosticInfoOptimizationBase( + : DiagnosticInfoIROptimization( DK_OptimizationRemark, DS_Remark, PassName, RemarkName, *cast<BasicBlock>(CodeRegion)->getParent(), DLoc, CodeRegion) {} OptimizationRemark::OptimizationRemark(const char *PassName, StringRef RemarkName, Instruction *Inst) - : DiagnosticInfoOptimizationBase(DK_OptimizationRemark, DS_Remark, PassName, - RemarkName, - *Inst->getParent()->getParent(), - Inst->getDebugLoc(), Inst->getParent()) {} + : DiagnosticInfoIROptimization(DK_OptimizationRemark, DS_Remark, PassName, + RemarkName, *Inst->getParent()->getParent(), + Inst->getDebugLoc(), Inst->getParent()) {} bool OptimizationRemark::isEnabled() const { return PassRemarksOptLoc.Pattern && @@ -232,17 +231,17 @@ OptimizationRemarkMissed::OptimizationRemarkMissed(const char *PassName, StringRef RemarkName, const DebugLoc &DLoc, Value *CodeRegion) - : DiagnosticInfoOptimizationBase( + : DiagnosticInfoIROptimization( DK_OptimizationRemarkMissed, DS_Remark, PassName, RemarkName, *cast<BasicBlock>(CodeRegion)->getParent(), DLoc, CodeRegion) {} OptimizationRemarkMissed::OptimizationRemarkMissed(const char *PassName, StringRef RemarkName, Instruction *Inst) - : DiagnosticInfoOptimizationBase(DK_OptimizationRemarkMissed, DS_Remark, - PassName, RemarkName, - *Inst->getParent()->getParent(), - Inst->getDebugLoc(), Inst->getParent()) {} + : DiagnosticInfoIROptimization(DK_OptimizationRemarkMissed, DS_Remark, + PassName, RemarkName, + *Inst->getParent()->getParent(), + Inst->getDebugLoc(), Inst->getParent()) {} bool OptimizationRemarkMissed::isEnabled() const { return PassRemarksMissedOptLoc.Pattern && @@ -253,26 +252,26 @@ OptimizationRemarkAnalysis::OptimizationRemarkAnalysis(const char *PassName, StringRef RemarkName, const DebugLoc &DLoc, Value *CodeRegion) - : DiagnosticInfoOptimizationBase( + : DiagnosticInfoIROptimization( DK_OptimizationRemarkAnalysis, DS_Remark, PassName, RemarkName, *cast<BasicBlock>(CodeRegion)->getParent(), DLoc, CodeRegion) {} OptimizationRemarkAnalysis::OptimizationRemarkAnalysis(const char *PassName, StringRef RemarkName, Instruction *Inst) - : DiagnosticInfoOptimizationBase(DK_OptimizationRemarkAnalysis, DS_Remark, - PassName, RemarkName, - *Inst->getParent()->getParent(), - Inst->getDebugLoc(), Inst->getParent()) {} + : DiagnosticInfoIROptimization(DK_OptimizationRemarkAnalysis, DS_Remark, + PassName, RemarkName, + *Inst->getParent()->getParent(), + Inst->getDebugLoc(), Inst->getParent()) {} OptimizationRemarkAnalysis::OptimizationRemarkAnalysis(enum DiagnosticKind Kind, const char *PassName, StringRef RemarkName, const DebugLoc &DLoc, Value *CodeRegion) - : DiagnosticInfoOptimizationBase(Kind, DS_Remark, PassName, RemarkName, - *cast<BasicBlock>(CodeRegion)->getParent(), - DLoc, CodeRegion) {} + : DiagnosticInfoIROptimization(Kind, DS_Remark, PassName, RemarkName, + *cast<BasicBlock>(CodeRegion)->getParent(), + DLoc, CodeRegion) {} bool OptimizationRemarkAnalysis::isEnabled() const { return shouldAlwaysPrint() || |