diff options
author | Matthias Braun <matze@braunis.de> | 2023-10-05 18:26:50 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-10-05 18:26:50 -0700 |
commit | 2e26d091060e87629f23163433b5e2fd450b54bf (patch) | |
tree | 58dbb9dab149f9fe8199379dd9c7a7b689e507c9 /llvm/lib/Analysis/BlockFrequencyInfoImpl.cpp | |
parent | 86d1f4c538e50e8f764e7700d167ffd1d8f70102 (diff) | |
download | llvm-2e26d091060e87629f23163433b5e2fd450b54bf.zip llvm-2e26d091060e87629f23163433b5e2fd450b54bf.tar.gz llvm-2e26d091060e87629f23163433b5e2fd450b54bf.tar.bz2 |
BlockFrequencyInfo: Add PrintBlockFreq helper (#67512)
- Refactor the (Machine)BlockFrequencyInfo::printBlockFreq functions
into a `PrintBlockFreq()` function returning a `Printable` object. This
simplifies usage as it can be directly piped to a `raw_ostream` like
`dbgs() << PrintBlockFreq(MBFI, Freq) << '\n';`.
- Previously there was an interesting behavior where
`BlockFrequencyInfoImpl` stores frequencies both as a `Scaled64` number
and as an `uint64_t`. Most algorithms use the `BlockFrequency`
abstraction with the integers, the print function for basic blocks
printed the `Scaled64` number potentially showing higher accuracy than
was used by the algorithm. This changes things to only print
`BlockFrequency` values.
- Replace some instances of `dbgs() << Freq.getFrequency()` with the new
function.
Diffstat (limited to 'llvm/lib/Analysis/BlockFrequencyInfoImpl.cpp')
-rw-r--r-- | llvm/lib/Analysis/BlockFrequencyInfoImpl.cpp | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/llvm/lib/Analysis/BlockFrequencyInfoImpl.cpp b/llvm/lib/Analysis/BlockFrequencyInfoImpl.cpp index a440079..6f94499 100644 --- a/llvm/lib/Analysis/BlockFrequencyInfoImpl.cpp +++ b/llvm/lib/Analysis/BlockFrequencyInfoImpl.cpp @@ -640,19 +640,19 @@ BlockFrequencyInfoImplBase::getLoopName(const LoopData &Loop) const { return getBlockName(Loop.getHeader()) + (Loop.isIrreducible() ? "**" : "*"); } -raw_ostream & -BlockFrequencyInfoImplBase::printBlockFreq(raw_ostream &OS, - const BlockNode &Node) const { - return OS << getFloatingBlockFreq(Node); -} - -raw_ostream & -BlockFrequencyInfoImplBase::printBlockFreq(raw_ostream &OS, - BlockFrequency Freq) const { +void llvm::printBlockFreqImpl(raw_ostream &OS, BlockFrequency EntryFreq, + BlockFrequency Freq) { + if (Freq == BlockFrequency(0)) { + OS << "0"; + return; + } + if (EntryFreq == BlockFrequency(0)) { + OS << "<invalid BFI>"; + return; + } Scaled64 Block(Freq.getFrequency(), 0); - Scaled64 Entry(getEntryFreq().getFrequency(), 0); - - return OS << Block / Entry; + Scaled64 Entry(EntryFreq.getFrequency(), 0); + OS << Block / Entry; } void IrreducibleGraph::addNodesInLoop(const BFIBase::LoopData &OuterLoop) { |