diff options
Diffstat (limited to 'llvm/tools/llvm-pdbutil')
| -rw-r--r-- | llvm/tools/llvm-pdbutil/DumpOutputStyle.cpp | 15 | ||||
| -rw-r--r-- | llvm/tools/llvm-pdbutil/FormatUtil.cpp | 12 | ||||
| -rw-r--r-- | llvm/tools/llvm-pdbutil/FormatUtil.h | 3 | ||||
| -rw-r--r-- | llvm/tools/llvm-pdbutil/MinimalSymbolDumper.cpp | 4 | ||||
| -rw-r--r-- | llvm/tools/llvm-pdbutil/MinimalTypeDumper.cpp | 5 | ||||
| -rw-r--r-- | llvm/tools/llvm-pdbutil/StreamUtil.cpp | 6 | ||||
| -rw-r--r-- | llvm/tools/llvm-pdbutil/llvm-pdbutil.cpp | 6 | ||||
| -rw-r--r-- | llvm/tools/llvm-pdbutil/llvm-pdbutil.h | 1 | 
8 files changed, 28 insertions, 24 deletions
| diff --git a/llvm/tools/llvm-pdbutil/DumpOutputStyle.cpp b/llvm/tools/llvm-pdbutil/DumpOutputStyle.cpp index bf725ad8d6066..aa185e8a2f228 100644 --- a/llvm/tools/llvm-pdbutil/DumpOutputStyle.cpp +++ b/llvm/tools/llvm-pdbutil/DumpOutputStyle.cpp @@ -110,7 +110,7 @@ Error DumpOutputStyle::dump() {      P.NewLine();    } -  if (opts::dump::DumpTypeStats) { +  if (opts::dump::DumpTypeStats || opts::dump::DumpIDStats) {      if (auto EC = dumpTypeStats())        return EC;      P.NewLine(); @@ -701,7 +701,8 @@ Error DumpOutputStyle::dumpTypeStats() {    // Iterate the types, categorize by kind, accumulate size stats.    StatCollection TypeStats; -  LazyRandomTypeCollection &Types = File.types(); +  LazyRandomTypeCollection &Types = +      opts::dump::DumpTypeStats ? File.types() : File.ids();    for (Optional<TypeIndex> TI = Types.getFirst(); TI; TI = Types.getNext(*TI)) {      CVType Type = Types.getType(*TI);      TypeStats.update(uint32_t(Type.kind()), Type.length()); @@ -710,18 +711,16 @@ Error DumpOutputStyle::dumpTypeStats() {    P.NewLine();    P.formatLine("  Types");    AutoIndent Indent(P); -  P.formatLine("{0,14}: {1,7} entries ({2,12:N} bytes, {3,7} avg)", "Total", +  P.formatLine("{0,16}: {1,7} entries ({2,12:N} bytes, {3,7} avg)", "Total",                 TypeStats.Totals.Count, TypeStats.Totals.Size,                 (double)TypeStats.Totals.Size / TypeStats.Totals.Count);    P.formatLine("{0}", fmt_repeat('-', 74));    for (const auto &K : TypeStats.getStatsSortedBySize()) { -    P.formatLine("{0,14}: {1,7} entries ({2,12:N} bytes, {3,7} avg)", +    P.formatLine("{0,16}: {1,7} entries ({2,12:N} bytes, {3,7} avg)",                   formatTypeLeafKind(TypeLeafKind(K.first)), K.second.Count,                   K.second.Size, (double)K.second.Size / K.second.Count);    } - -    return Error::success();  } @@ -896,7 +895,7 @@ Error DumpOutputStyle::dumpUdtStats() {                        return L.Stat.Size > R.Stat.Size;                      });    for (const auto &Stat : NamespacedStatsSorted) { -    std::string Label = formatv("namespace '{0}'", Stat.Key); +    std::string Label = std::string(formatv("namespace '{0}'", Stat.Key));      P.formatLine("{0} | {1:N}  {2:N}",                   fmt_align(Label, AlignStyle::Right, FieldWidth),                   fmt_align(Stat.Stat.Count, AlignStyle::Right, CD), @@ -1039,7 +1038,7 @@ Error DumpOutputStyle::dumpXmi() {            }            std::vector<std::string> TIs;            for (const auto I : Xmi.Imports) -            TIs.push_back(formatv("{0,+10:X+}", fmtle(I))); +            TIs.push_back(std::string(formatv("{0,+10:X+}", fmtle(I))));            std::string Result =                typesetItemList(TIs, P.getIndentLevel() + 35, 12, " ");            P.formatLine("{0,+32} | {1}", Module, Result); diff --git a/llvm/tools/llvm-pdbutil/FormatUtil.cpp b/llvm/tools/llvm-pdbutil/FormatUtil.cpp index 1a13f383e53c8..c9ef196094964 100644 --- a/llvm/tools/llvm-pdbutil/FormatUtil.cpp +++ b/llvm/tools/llvm-pdbutil/FormatUtil.cpp @@ -20,7 +20,7 @@ using namespace llvm::pdb;  std::string llvm::pdb::truncateStringBack(StringRef S, uint32_t MaxLen) {    if (MaxLen == 0 || S.size() <= MaxLen || S.size() <= 3) -    return S; +    return std::string(S);    assert(MaxLen >= 3);    uint32_t FinalLen = std::min<size_t>(S.size(), MaxLen - 3); @@ -30,7 +30,7 @@ std::string llvm::pdb::truncateStringBack(StringRef S, uint32_t MaxLen) {  std::string llvm::pdb::truncateStringMiddle(StringRef S, uint32_t MaxLen) {    if (MaxLen == 0 || S.size() <= MaxLen || S.size() <= 3) -    return S; +    return std::string(S);    assert(MaxLen >= 3);    uint32_t FinalLen = std::min<size_t>(S.size(), MaxLen - 3); @@ -41,7 +41,7 @@ std::string llvm::pdb::truncateStringMiddle(StringRef S, uint32_t MaxLen) {  std::string llvm::pdb::truncateStringFront(StringRef S, uint32_t MaxLen) {    if (MaxLen == 0 || S.size() <= MaxLen || S.size() <= 3) -    return S; +    return std::string(S);    assert(MaxLen >= 3);    S = S.take_back(MaxLen - 3); @@ -82,7 +82,7 @@ std::string llvm::pdb::typesetItemList(ArrayRef<std::string> Opts,      if (!Opts.empty()) {        Result += Sep;        Result += "\n"; -      Result += formatv("{0}", fmt_repeat(' ', IndentLevel)); +      Result += std::string(formatv("{0}", fmt_repeat(' ', IndentLevel)));      }    }    return Result; @@ -92,7 +92,7 @@ std::string llvm::pdb::typesetStringList(uint32_t IndentLevel,                                           ArrayRef<StringRef> Strings) {    std::string Result = "[";    for (const auto &S : Strings) { -    Result += formatv("\n{0}{1}", fmt_repeat(' ', IndentLevel), S); +    Result += std::string(formatv("\n{0}{1}", fmt_repeat(' ', IndentLevel), S));    }    Result += "]";    return Result; @@ -169,7 +169,7 @@ StringRef llvm::pdb::formatTypeLeafKind(TypeLeafKind K) {  }  std::string llvm::pdb::formatSegmentOffset(uint16_t Segment, uint32_t Offset) { -  return formatv("{0:4}:{1:4}", Segment, Offset); +  return std::string(formatv("{0:4}:{1:4}", Segment, Offset));  }  #define PUSH_CHARACTERISTIC_FLAG(Enum, TheOpt, Value, Style, Descriptive)      \ diff --git a/llvm/tools/llvm-pdbutil/FormatUtil.h b/llvm/tools/llvm-pdbutil/FormatUtil.h index 19ce248f9a6f0..1a006844e011a 100644 --- a/llvm/tools/llvm-pdbutil/FormatUtil.h +++ b/llvm/tools/llvm-pdbutil/FormatUtil.h @@ -42,8 +42,7 @@ std::string truncateQuotedNameBack(StringRef Label, StringRef Name,      return Ret;  template <typename T> std::string formatUnknownEnum(T Value) { -  return formatv("unknown ({0})", -                 static_cast<typename std::underlying_type<T>::type>(Value)) +  return formatv("unknown ({0})", static_cast<std::underlying_type_t<T>>(Value))        .str();  } diff --git a/llvm/tools/llvm-pdbutil/MinimalSymbolDumper.cpp b/llvm/tools/llvm-pdbutil/MinimalSymbolDumper.cpp index ebfa50625e767..7a06140855f80 100644 --- a/llvm/tools/llvm-pdbutil/MinimalSymbolDumper.cpp +++ b/llvm/tools/llvm-pdbutil/MinimalSymbolDumper.cpp @@ -371,9 +371,9 @@ std::string MinimalSymbolDumper::typeOrIdIndex(codeview::TypeIndex TI,    StringRef Name = Container.getTypeName(TI);    if (Name.size() > 32) {      Name = Name.take_front(32); -    return formatv("{0} ({1}...)", TI, Name); +    return std::string(formatv("{0} ({1}...)", TI, Name));    } else -    return formatv("{0} ({1})", TI, Name); +    return std::string(formatv("{0} ({1})", TI, Name));  }  std::string MinimalSymbolDumper::idIndex(codeview::TypeIndex TI) const { diff --git a/llvm/tools/llvm-pdbutil/MinimalTypeDumper.cpp b/llvm/tools/llvm-pdbutil/MinimalTypeDumper.cpp index 3fdef085f19e0..8e46a97272d58 100644 --- a/llvm/tools/llvm-pdbutil/MinimalTypeDumper.cpp +++ b/llvm/tools/llvm-pdbutil/MinimalTypeDumper.cpp @@ -201,8 +201,9 @@ static std::string formatPointerAttrs(const PointerRecord &Record) {    PointerMode Mode = Record.getMode();    PointerOptions Opts = Record.getOptions();    PointerKind Kind = Record.getPointerKind(); -  return formatv("mode = {0}, opts = {1}, kind = {2}", formatPointerMode(Mode), -                 pointerOptions(Opts), pointerKind(Kind)); +  return std::string(formatv("mode = {0}, opts = {1}, kind = {2}", +                             formatPointerMode(Mode), pointerOptions(Opts), +                             pointerKind(Kind)));  }  static std::string formatFunctionOptions(FunctionOptions Options) { diff --git a/llvm/tools/llvm-pdbutil/StreamUtil.cpp b/llvm/tools/llvm-pdbutil/StreamUtil.cpp index 7dfc2beefe78d..d0d0a9fbe9275 100644 --- a/llvm/tools/llvm-pdbutil/StreamUtil.cpp +++ b/llvm/tools/llvm-pdbutil/StreamUtil.cpp @@ -32,7 +32,7 @@ std::string StreamInfo::getLongName() const {  StreamInfo StreamInfo::createStream(StreamPurpose Purpose, StringRef Name,                                      uint32_t StreamIndex) {    StreamInfo Result; -  Result.Name = Name; +  Result.Name = std::string(Name);    Result.StreamIndex = StreamIndex;    Result.Purpose = Purpose;    return Result; @@ -41,7 +41,7 @@ StreamInfo StreamInfo::createStream(StreamPurpose Purpose, StringRef Name,  StreamInfo StreamInfo::createModuleStream(StringRef Module,                                            uint32_t StreamIndex, uint32_t Modi) {    StreamInfo Result; -  Result.Name = Module; +  Result.Name = std::string(Module);    Result.StreamIndex = StreamIndex;    Result.ModuleIndex = Modi;    Result.Purpose = StreamPurpose::ModuleStream; @@ -90,7 +90,7 @@ void llvm::pdb::discoverStreamPurposes(PDBFile &File,    if (Info) {      for (auto &NSE : Info->named_streams()) {        if (NSE.second != kInvalidStreamIndex) -        NamedStreams[NSE.second] = NSE.first(); +        NamedStreams[NSE.second] = std::string(NSE.first());      }    } diff --git a/llvm/tools/llvm-pdbutil/llvm-pdbutil.cpp b/llvm/tools/llvm-pdbutil/llvm-pdbutil.cpp index 9307300861d43..00092e71c6b49 100644 --- a/llvm/tools/llvm-pdbutil/llvm-pdbutil.cpp +++ b/llvm/tools/llvm-pdbutil/llvm-pdbutil.cpp @@ -466,6 +466,10 @@ cl::opt<bool> DumpTypeStats(      "type-stats",      cl::desc("Dump a detailed breakdown of type usage/size"),      cl::cat(MsfOptions), cl::sub(DumpSubcommand)); +cl::opt<bool> DumpIDStats( +    "id-stats", +    cl::desc("Dump a detailed breakdown of IPI types usage/size"), +    cl::cat(MsfOptions), cl::sub(DumpSubcommand));  cl::opt<bool> DumpUdtStats(      "udt-stats",      cl::desc("Dump a detailed breakdown of S_UDT record usage / stats"), @@ -1507,7 +1511,7 @@ int main(int Argc, const char **Argv) {      if (opts::yaml2pdb::YamlPdbOutputFile.empty()) {        SmallString<16> OutputFilename(opts::yaml2pdb::InputFilename.getValue());        sys::path::replace_extension(OutputFilename, ".pdb"); -      opts::yaml2pdb::YamlPdbOutputFile = OutputFilename.str(); +      opts::yaml2pdb::YamlPdbOutputFile = std::string(OutputFilename.str());      }      yamlToPdb(opts::yaml2pdb::InputFilename);    } else if (opts::DiaDumpSubcommand) { diff --git a/llvm/tools/llvm-pdbutil/llvm-pdbutil.h b/llvm/tools/llvm-pdbutil/llvm-pdbutil.h index 321f41bba7f17..9fe92c2c9d75e 100644 --- a/llvm/tools/llvm-pdbutil/llvm-pdbutil.h +++ b/llvm/tools/llvm-pdbutil/llvm-pdbutil.h @@ -141,6 +141,7 @@ extern llvm::cl::opt<bool> DumpFpm;  extern llvm::cl::opt<bool> DumpStreams;  extern llvm::cl::opt<bool> DumpSymbolStats;  extern llvm::cl::opt<bool> DumpTypeStats; +extern llvm::cl::opt<bool> DumpIDStats;  extern llvm::cl::opt<bool> DumpUdtStats;  extern llvm::cl::opt<bool> DumpStreamBlocks; | 
