mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 19:52:54 +01:00
[NFC] Pre-calculate function IR counts in size remarks.
Size remarks are slow due to lots of recalculation of the module. Pre-calculate the module size and initial function size for a remark. Use deltas calculated using the less-expensive function IR count to update the module counts for Function passes. 1/6 llvm-svn: 341245
This commit is contained in:
parent
ef5a14b22c
commit
576c480097
@ -1510,8 +1510,14 @@ bool FPPassManager::runOnFunction(Function &F) {
|
||||
// Collect inherited analysis from Module level pass manager.
|
||||
populateInheritedAnalysis(TPM->activeStack);
|
||||
|
||||
unsigned InstrCount = 0;
|
||||
unsigned InstrCount, FunctionSize = 0;
|
||||
bool EmitICRemark = M.shouldEmitInstrCountChangedRemark();
|
||||
// Collect the initial size of the module.
|
||||
if (EmitICRemark) {
|
||||
InstrCount = initSizeRemarkInfo(M);
|
||||
FunctionSize = F.getInstructionCount();
|
||||
}
|
||||
|
||||
for (unsigned Index = 0; Index < getNumContainedPasses(); ++Index) {
|
||||
FunctionPass *FP = getContainedPass(Index);
|
||||
bool LocalChanged = false;
|
||||
@ -1524,11 +1530,20 @@ bool FPPassManager::runOnFunction(Function &F) {
|
||||
{
|
||||
PassManagerPrettyStackEntry X(FP, F);
|
||||
TimeRegion PassTimer(getPassTimer(FP));
|
||||
if (EmitICRemark)
|
||||
InstrCount = initSizeRemarkInfo(M);
|
||||
LocalChanged |= FP->runOnFunction(F);
|
||||
if (EmitICRemark)
|
||||
emitInstrCountChangedRemark(FP, M, InstrCount);
|
||||
if (EmitICRemark) {
|
||||
unsigned NewSize = F.getInstructionCount();
|
||||
|
||||
// Update the size of the function, emit a remark, and update the size
|
||||
// of the module.
|
||||
if (NewSize != FunctionSize) {
|
||||
emitInstrCountChangedRemark(FP, M, InstrCount);
|
||||
int64_t Delta = static_cast<int64_t>(NewSize) -
|
||||
static_cast<int64_t>(FunctionSize);
|
||||
InstrCount = static_cast<int64_t>(InstrCount) + Delta;
|
||||
FunctionSize = NewSize;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Changed |= LocalChanged;
|
||||
|
Loading…
Reference in New Issue
Block a user