mirror of
https://github.com/RPCS3/llvm.git
synced 2025-04-12 19:18:48 +00:00
[MachineOutliner][NFC] Move outlined function remark into its own function
This pulls the OutlinedFunction remark out into its own function to make the code a bit easier to read. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@337849 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
742c37184c
commit
e38c32aa3b
@ -716,6 +716,9 @@ struct MachineOutliner : public ModulePass {
|
||||
unsigned StringLen, std::vector<Candidate> &CandidatesForRepeatedSeq,
|
||||
OutlinedFunction &OF);
|
||||
|
||||
/// Remark output explaining that a function was outlined.
|
||||
void emitOutlinedFunctionRemark(OutlinedFunction &OF);
|
||||
|
||||
/// Find all repeated substrings that satisfy the outlining cost model.
|
||||
///
|
||||
/// If a substring appears at least twice, then it must be represented by
|
||||
@ -859,6 +862,35 @@ void MachineOutliner::emitNotOutliningCheaperRemark(
|
||||
});
|
||||
}
|
||||
|
||||
void MachineOutliner::emitOutlinedFunctionRemark(OutlinedFunction &OF) {
|
||||
MachineBasicBlock *MBB = &*OF.MF->begin();
|
||||
MachineOptimizationRemarkEmitter MORE(*OF.MF, nullptr);
|
||||
MachineOptimizationRemark R(DEBUG_TYPE, "OutlinedFunction",
|
||||
MBB->findDebugLoc(MBB->begin()), MBB);
|
||||
R << "Saved " << NV("OutliningBenefit", OF.getBenefit()) << " bytes by "
|
||||
<< "outlining " << NV("Length", OF.Sequence.size()) << " instructions "
|
||||
<< "from " << NV("NumOccurrences", OF.getOccurrenceCount())
|
||||
<< " locations. "
|
||||
<< "(Found at: ";
|
||||
|
||||
// Tell the user the other places the candidate was found.
|
||||
for (size_t i = 0, e = OF.Candidates.size(); i < e; i++) {
|
||||
|
||||
// Skip over things that were pruned.
|
||||
if (!OF.Candidates[i]->InCandidateList)
|
||||
continue;
|
||||
|
||||
R << NV((Twine("StartLoc") + Twine(i)).str(),
|
||||
OF.Candidates[i]->front()->getDebugLoc());
|
||||
if (i != e - 1)
|
||||
R << ", ";
|
||||
}
|
||||
|
||||
R << ")";
|
||||
|
||||
MORE.emit(R);
|
||||
}
|
||||
|
||||
unsigned MachineOutliner::findCandidates(
|
||||
SuffixTree &ST, const TargetInstrInfo &TII, InstructionMapper &Mapper,
|
||||
std::vector<std::shared_ptr<Candidate>> &CandidateList,
|
||||
@ -1233,37 +1265,7 @@ bool MachineOutliner::outline(
|
||||
// Does this candidate have a function yet?
|
||||
if (!OF.MF) {
|
||||
OF.MF = createOutlinedFunction(M, OF, Mapper);
|
||||
MachineBasicBlock *MBB = &*OF.MF->begin();
|
||||
|
||||
// Output a remark telling the user that an outlined function was created,
|
||||
// and explaining where it came from.
|
||||
MachineOptimizationRemarkEmitter MORE(*OF.MF, nullptr);
|
||||
MachineOptimizationRemark R(DEBUG_TYPE, "OutlinedFunction",
|
||||
MBB->findDebugLoc(MBB->begin()), MBB);
|
||||
R << "Saved " << NV("OutliningBenefit", OF.getBenefit())
|
||||
<< " bytes by "
|
||||
<< "outlining " << NV("Length", OF.Sequence.size()) << " instructions "
|
||||
<< "from " << NV("NumOccurrences", OF.getOccurrenceCount())
|
||||
<< " locations. "
|
||||
<< "(Found at: ";
|
||||
|
||||
// Tell the user the other places the candidate was found.
|
||||
for (size_t i = 0, e = OF.Candidates.size(); i < e; i++) {
|
||||
|
||||
// Skip over things that were pruned.
|
||||
if (!OF.Candidates[i]->InCandidateList)
|
||||
continue;
|
||||
|
||||
R << NV(
|
||||
(Twine("StartLoc") + Twine(i)).str(),
|
||||
OF.Candidates[i]->front()->getDebugLoc());
|
||||
if (i != e - 1)
|
||||
R << ", ";
|
||||
}
|
||||
|
||||
R << ")";
|
||||
|
||||
MORE.emit(R);
|
||||
emitOutlinedFunctionRemark(OF);
|
||||
FunctionsCreated++;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user