forked from OSchip/llvm-project
[llvm][nfc] InstructionCostDetail encapsulation
Ensured initialized fields; encapsulad delta calulations and evaluation of threshold having had changed; assertion for CostThresholdMap dereference, to indicate design intent. Differential Revision: https://reviews.llvm.org/D77762
This commit is contained in:
parent
d4579b7ef6
commit
b4924f01a4
|
@ -116,10 +116,16 @@ class InlineCostCallAnalyzer;
|
|||
// This struct is used to store information about inline cost of a
|
||||
// particular instruction
|
||||
struct InstructionCostDetail {
|
||||
int CostBefore;
|
||||
int CostAfter;
|
||||
int ThresholdBefore;
|
||||
int ThresholdAfter;
|
||||
int CostBefore = 0;
|
||||
int CostAfter = 0;
|
||||
int ThresholdBefore = 0;
|
||||
int ThresholdAfter = 0;
|
||||
|
||||
int getThresholdDelta() const { return ThresholdAfter - ThresholdBefore; }
|
||||
|
||||
int getCostDelta() const { return CostAfter - CostBefore; }
|
||||
|
||||
bool hasThresholdChanged() const { return ThresholdAfter != ThresholdBefore; }
|
||||
};
|
||||
|
||||
class CostAnnotationWriter : public AssemblyAnnotationWriter {
|
||||
|
@ -722,16 +728,16 @@ void CostAnnotationWriter::emitInstructionAnnot(
|
|||
// The cost of inlining of the given instruction is printed always.
|
||||
// The threshold delta is printed only when it is non-zero. It happens
|
||||
// when we decided to give a bonus at a particular instruction.
|
||||
OS << "; cost before = " << CostThresholdMap[I].CostBefore <<
|
||||
", cost after = " << CostThresholdMap[I].CostAfter <<
|
||||
", threshold before = " << CostThresholdMap[I].ThresholdBefore <<
|
||||
", threshold after = " << CostThresholdMap[I].ThresholdAfter <<
|
||||
", ";
|
||||
OS << "cost delta = " << CostThresholdMap[I].CostAfter -
|
||||
CostThresholdMap[I].CostBefore;
|
||||
if (CostThresholdMap[I].ThresholdAfter != CostThresholdMap[I].ThresholdBefore)
|
||||
OS << ", threshold delta = " << CostThresholdMap[I].ThresholdAfter -
|
||||
CostThresholdMap[I].ThresholdBefore;
|
||||
assert(CostThresholdMap.count(I) > 0 &&
|
||||
"Expected each instruction to have an instruction annotation");
|
||||
const auto &Record = CostThresholdMap[I];
|
||||
OS << "; cost before = " << Record.CostBefore
|
||||
<< ", cost after = " << Record.CostAfter
|
||||
<< ", threshold before = " << Record.ThresholdBefore
|
||||
<< ", threshold after = " << Record.ThresholdAfter << ", ";
|
||||
OS << "cost delta = " << Record.getCostDelta();
|
||||
if (Record.hasThresholdChanged())
|
||||
OS << ", threshold delta = " << Record.getThresholdDelta();
|
||||
OS << "\n";
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue