diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2020-07-26 19:36:28 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2020-07-26 19:36:28 +0000 |
commit | cfca06d7963fa0909f90483b42a6d7d194d01e08 (patch) | |
tree | 209fb2a2d68f8f277793fc8df46c753d31bc853b /llvm/tools/llvm-pdbutil | |
parent | 706b4fc47bbc608932d3b491ae19a3b9cde9497b (diff) |
Notes
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 bf725ad8d606..aa185e8a2f22 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 1a13f383e53c..c9ef19609496 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 19ce248f9a6f..1a006844e011 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 ebfa50625e76..7a06140855f8 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 3fdef085f19e..8e46a97272d5 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 7dfc2beefe78..d0d0a9fbe927 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 9307300861d4..00092e71c6b4 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 321f41bba7f1..9fe92c2c9d75 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; |