1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 02:52:53 +02:00

[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:
Mircea Trofin 2020-04-08 14:54:33 -07:00
parent 9247ec34a6
commit d3e3acd8e8

View File

@ -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";
}