summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-profdata
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2018-08-24 01:34:45 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2018-08-24 01:34:45 +0000
commitc6ba9ca1696416cd53d86fc79ad8fe2771243e8a (patch)
tree206f20bcc5574b0504a99ceff39757fa2a9cb29a /llvm/tools/llvm-profdata
parentc5f98d2ab24c466d39434c0e34f6826a77d5a0b7 (diff)
downloadbcm5719-llvm-c6ba9ca1696416cd53d86fc79ad8fe2771243e8a.tar.gz
bcm5719-llvm-c6ba9ca1696416cd53d86fc79ad8fe2771243e8a.zip
Make llvm-profdata show -text work as advertised in the documentation.
Per LLVM's CommandGuide, llvm-profdata show -text is supposed to produce textual output that can be passed as input to further llvm-profdata invocations. This previously didn't work for two reasons: 1) -text was not sufficient to enable the machine-readable text format output; instead, -text was effectively ignored if -counts was not also specified. (With this patch, -counts is instead ignored if -text is specified, because the machine-readable text format always includes counts.) 2) When the input data was an IR-level profile, the :ir marker was missing from the output, resulting in a text format output that would not be usable as profiling data due to function hash mismatches. Differential Revision: https://reviews.llvm.org/D51188 llvm-svn: 340592
Diffstat (limited to 'llvm/tools/llvm-profdata')
-rw-r--r--llvm/tools/llvm-profdata/llvm-profdata.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/llvm/tools/llvm-profdata/llvm-profdata.cpp b/llvm/tools/llvm-profdata/llvm-profdata.cpp
index 1a0b9e127bb..d62505af40e 100644
--- a/llvm/tools/llvm-profdata/llvm-profdata.cpp
+++ b/llvm/tools/llvm-profdata/llvm-profdata.cpp
@@ -600,12 +600,16 @@ static int showInstrProfile(const std::string &Filename, bool ShowCounts,
decltype(MinCmp)>
HottestFuncs(MinCmp);
+ // Add marker so that IR-level instrumentation round-trips properly.
+ if (TextFormat && IsIRInstr)
+ OS << ":ir\n";
+
for (const auto &Func : *Reader) {
bool Show =
ShowAllFunctions || (!ShowFunction.empty() &&
Func.Name.find(ShowFunction) != Func.Name.npos);
- bool doTextFormatDump = (Show && ShowCounts && TextFormat);
+ bool doTextFormatDump = (Show && TextFormat);
if (doTextFormatDump) {
InstrProfSymtab &Symtab = Reader->getSymtab();
@@ -679,7 +683,7 @@ static int showInstrProfile(const std::string &Filename, bool ShowCounts,
if (Reader->hasError())
exitWithError(Reader->getError(), Filename);
- if (ShowCounts && TextFormat)
+ if (TextFormat)
return 0;
std::unique_ptr<ProfileSummary> PS(Builder.getSummary());
OS << "Instrumentation level: "
OpenPOWER on IntegriCloud