mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 12:12:47 +01:00
[NFC] Optionally pass a function to emitInstrCountChangedRemark
In basic block, loop, and function passes, we already have a function that we can use to emit optimization remarks. We can use that instead of searching the module for the first suitable function (that is, one that contains at least one basic block.) llvm-svn: 341253
This commit is contained in:
parent
7550fc6490
commit
77c57aa86c
@ -410,8 +410,10 @@ public:
|
||||
|
||||
/// Emit a remark signifying that the number of IR instructions in the module
|
||||
/// changed.
|
||||
/// \p F is optionally passed by passes which run on Functions, and thus
|
||||
/// always know whether or not a non-empty function is available.
|
||||
void emitInstrCountChangedRemark(Pass *P, Module &M, int64_t Delta,
|
||||
unsigned CountBefore);
|
||||
unsigned CountBefore, Function *F = nullptr);
|
||||
|
||||
protected:
|
||||
// Top level manager.
|
||||
|
@ -226,7 +226,7 @@ bool LPPassManager::runOnFunction(Function &F) {
|
||||
if (NewSize != FunctionSize) {
|
||||
int64_t Delta = static_cast<int64_t>(NewSize) -
|
||||
static_cast<int64_t>(FunctionSize);
|
||||
emitInstrCountChangedRemark(P, M, Delta, InstrCount);
|
||||
emitInstrCountChangedRemark(P, M, Delta, InstrCount, &F);
|
||||
InstrCount = static_cast<int64_t>(InstrCount) + Delta;
|
||||
FunctionSize = NewSize;
|
||||
}
|
||||
|
@ -143,7 +143,8 @@ unsigned PMDataManager::initSizeRemarkInfo(Module &M) {
|
||||
|
||||
void PMDataManager::emitInstrCountChangedRemark(Pass *P, Module &M,
|
||||
int64_t Delta,
|
||||
unsigned CountBefore) {
|
||||
unsigned CountBefore,
|
||||
Function *F) {
|
||||
// If it's a pass manager, don't emit a remark. (This hinges on the assumption
|
||||
// that the only passes that return non-null with getAsPMDataManager are pass
|
||||
// managers.) The reason we have to do this is to avoid emitting remarks for
|
||||
@ -151,19 +152,22 @@ void PMDataManager::emitInstrCountChangedRemark(Pass *P, Module &M,
|
||||
if (P->getAsPMDataManager())
|
||||
return;
|
||||
|
||||
// We need a function containing at least one basic block in order to output
|
||||
// remarks. Since it's possible that the first function in the module doesn't
|
||||
// actually contain a basic block, we have to go and find one that's suitable
|
||||
// for emitting remarks.
|
||||
auto It = std::find_if(M.begin(), M.end(),
|
||||
[](const Function &Fn) { return !Fn.empty(); });
|
||||
// Do we have a function we can use to emit a remark?
|
||||
if (F == nullptr) {
|
||||
// We need a function containing at least one basic block in order to output
|
||||
// remarks. Since it's possible that the first function in the module
|
||||
// doesn't actually contain a basic block, we have to go and find one that's
|
||||
// suitable for emitting remarks.
|
||||
auto It = std::find_if(M.begin(), M.end(),
|
||||
[](const Function &Fn) { return !Fn.empty(); });
|
||||
|
||||
// Didn't find a function. Quit.
|
||||
if (It == M.end())
|
||||
return;
|
||||
// Didn't find a function. Quit.
|
||||
if (It == M.end())
|
||||
return;
|
||||
|
||||
// We found a function containing at least one basic block.
|
||||
Function *F = &*It;
|
||||
// We found a function containing at least one basic block.
|
||||
F = &*It;
|
||||
}
|
||||
int64_t CountAfter = static_cast<int64_t>(CountBefore) + Delta;
|
||||
BasicBlock &BB = *F->begin();
|
||||
OptimizationRemarkAnalysis R("size-info", "IRSizeChange",
|
||||
@ -1306,7 +1310,7 @@ bool BBPassManager::runOnFunction(Function &F) {
|
||||
if (NewSize != BBSize) {
|
||||
int64_t Delta =
|
||||
static_cast<int64_t>(NewSize) - static_cast<int64_t>(BBSize);
|
||||
emitInstrCountChangedRemark(BP, M, Delta, InstrCount);
|
||||
emitInstrCountChangedRemark(BP, M, Delta, InstrCount, &F);
|
||||
InstrCount = static_cast<int64_t>(InstrCount) + Delta;
|
||||
BBSize = NewSize;
|
||||
}
|
||||
@ -1543,7 +1547,7 @@ bool FPPassManager::runOnFunction(Function &F) {
|
||||
if (NewSize != FunctionSize) {
|
||||
int64_t Delta = static_cast<int64_t>(NewSize) -
|
||||
static_cast<int64_t>(FunctionSize);
|
||||
emitInstrCountChangedRemark(FP, M, Delta, InstrCount);
|
||||
emitInstrCountChangedRemark(FP, M, Delta, InstrCount, &F);
|
||||
InstrCount = static_cast<int64_t>(InstrCount) + Delta;
|
||||
FunctionSize = NewSize;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user