diff options
Diffstat (limited to 'llvm/tools')
| -rw-r--r-- | llvm/tools/llvm-readobj/ELFDumper.cpp | 4 | ||||
| -rw-r--r-- | llvm/tools/obj2yaml/elf2yaml.cpp | 11 | ||||
| -rw-r--r-- | llvm/tools/opt-viewer/optrecord.py | 33 | 
3 files changed, 20 insertions, 28 deletions
| diff --git a/llvm/tools/llvm-readobj/ELFDumper.cpp b/llvm/tools/llvm-readobj/ELFDumper.cpp index 423a11f..6f09da5 100644 --- a/llvm/tools/llvm-readobj/ELFDumper.cpp +++ b/llvm/tools/llvm-readobj/ELFDumper.cpp @@ -8188,6 +8188,8 @@ void LLVMELFDumper<ELFT>::printBBAddrMaps(bool PrettyPGOAnalysis) {                } else {                  W.printNumber("Frequency", PBBE.BlockFreq.getFrequency());                } +              if (PAM.FeatEnable.PostLinkCfg) +                W.printNumber("PostLink Frequency", PBBE.PostLinkBlockFreq);              }              if (PAM.FeatEnable.BrProb) { @@ -8200,6 +8202,8 @@ void LLVMELFDumper<ELFT>::printBBAddrMaps(bool PrettyPGOAnalysis) {                  } else {                    W.printHex("Probability", Succ.Prob.getNumerator());                  } +                if (PAM.FeatEnable.PostLinkCfg) +                  W.printNumber("PostLink Probability", Succ.PostLinkFreq);                }              }            } diff --git a/llvm/tools/obj2yaml/elf2yaml.cpp b/llvm/tools/obj2yaml/elf2yaml.cpp index 68e18f6..4364d15 100644 --- a/llvm/tools/obj2yaml/elf2yaml.cpp +++ b/llvm/tools/obj2yaml/elf2yaml.cpp @@ -895,7 +895,7 @@ ELFDumper<ELFT>::dumpBBAddrMapSection(const Elf_Shdr *Shdr) {    std::vector<ELFYAML::PGOAnalysisMapEntry> PGOAnalyses;    DataExtractor::Cursor Cur(0);    uint8_t Version = 0; -  uint8_t Feature = 0; +  uint16_t Feature = 0;    uint64_t Address = 0;    while (Cur && Cur.tell() < Content.size()) {      if (Shdr->sh_type == ELF::SHT_LLVM_BB_ADDR_MAP) { @@ -905,7 +905,7 @@ ELFDumper<ELFT>::dumpBBAddrMapSection(const Elf_Shdr *Shdr) {              errc::invalid_argument,              "invalid SHT_LLVM_BB_ADDR_MAP section version: " +                  Twine(static_cast<int>(Version))); -      Feature = Data.getU8(Cur); +      Feature = Version < 5 ? Data.getU8(Cur) : Data.getU16(Cur);      }      uint64_t NumBBRanges = 1;      uint64_t NumBlocks = 0; @@ -972,6 +972,8 @@ ELFDumper<ELFT>::dumpBBAddrMapSection(const Elf_Shdr *Shdr) {            auto &PGOBBEntry = PGOBBEntries.emplace_back();            if (FeatureOrErr->BBFreq) {              PGOBBEntry.BBFreq = Data.getULEB128(Cur); +            if (FeatureOrErr->PostLinkCfg) +              PGOBBEntry.PostLinkBBFreq = Data.getULEB128(Cur);              if (!Cur)                break;            } @@ -982,7 +984,10 @@ ELFDumper<ELFT>::dumpBBAddrMapSection(const Elf_Shdr *Shdr) {              for (uint64_t SuccIdx = 0; Cur && SuccIdx < SuccCount; ++SuccIdx) {                uint32_t ID = Data.getULEB128(Cur);                uint32_t BrProb = Data.getULEB128(Cur); -              SuccEntries.push_back({ID, BrProb}); +              std::optional<uint32_t> PostLinkBrFreq; +              if (FeatureOrErr->PostLinkCfg) +                PostLinkBrFreq = Data.getULEB128(Cur); +              SuccEntries.push_back({ID, BrProb, PostLinkBrFreq});              }            }          } diff --git a/llvm/tools/opt-viewer/optrecord.py b/llvm/tools/opt-viewer/optrecord.py index 8014204..b9244fd 100644 --- a/llvm/tools/opt-viewer/optrecord.py +++ b/llvm/tools/opt-viewer/optrecord.py @@ -19,35 +19,18 @@ import functools  from multiprocessing import Lock  import os, os.path  import subprocess - -try: -    # The previously builtin function `intern()` was moved -    # to the `sys` module in Python 3. -    from sys import intern -except: -    pass - +from sys import intern  import re  import optpmap -try: -    dict.iteritems -except AttributeError: -    # Python 3 -    def itervalues(d): -        return iter(d.values()) - -    def iteritems(d): -        return iter(d.items()) - -else: -    # Python 2 -    def itervalues(d): -        return d.itervalues() - -    def iteritems(d): -        return d.iteritems() + +def itervalues(d): +    return iter(d.values()) + + +def iteritems(d): +    return iter(d.items())  def html_file_name(filename): | 
